zakuro 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +16 -3
- data/VERSION +1 -1
- data/lib/zakuro/calculation/base/gengou.rb +4 -4
- data/lib/zakuro/calculation/base/linear_gengou.rb +6 -6
- data/lib/zakuro/calculation/era/gengou/internal/connector.rb +107 -0
- data/lib/zakuro/calculation/era/gengou/internal/counter.rb +214 -0
- data/lib/zakuro/calculation/era/gengou/internal/publisher.rb +104 -0
- data/lib/zakuro/calculation/era/gengou/internal/reserve/list.rb +244 -0
- data/lib/zakuro/calculation/era/gengou/internal/reserve/range.rb +193 -0
- data/lib/zakuro/calculation/{gengou → era/gengou}/internal/reserve.rb +6 -6
- data/lib/zakuro/calculation/{gengou → era/gengou}/scroll.rb +44 -95
- data/lib/zakuro/calculation/{version → era/version}/internal/crawler.rb +7 -7
- data/lib/zakuro/calculation/{version → era/version}/internal/range.rb +4 -4
- data/lib/zakuro/calculation/{version → era/version}/version.rb +3 -3
- data/lib/zakuro/calculation/monthly/month.rb +2 -2
- data/lib/zakuro/calculation/range/full_range.rb +18 -19
- data/lib/zakuro/calculation/range/operated_range.rb +3 -4
- data/lib/zakuro/calculation/specifier/internal/month.rb +84 -0
- data/lib/zakuro/calculation/specifier/multiple_day.rb +162 -0
- data/lib/zakuro/calculation/specifier/single_day.rb +2 -2
- data/lib/zakuro/calculation/summary/internal/operation.rb +98 -0
- data/lib/zakuro/calculation/summary/range.rb +120 -0
- data/lib/zakuro/calculation/summary/single.rb +45 -67
- data/lib/zakuro/condition.rb +14 -0
- data/lib/zakuro/era/japan/gengou/alignment/aligner.rb +106 -0
- data/lib/zakuro/era/japan/gengou/alignment/division.rb +165 -0
- data/lib/zakuro/era/japan/gengou/alignment/line.rb +156 -0
- data/lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb +184 -0
- data/lib/zakuro/era/japan/gengou/alignment.rb +42 -0
- data/lib/zakuro/era/japan/gengou/resource/parser.rb +242 -0
- data/lib/zakuro/era/japan/gengou/resource/type.rb +292 -0
- data/lib/zakuro/era/japan/gengou/resource/validator.rb +346 -0
- data/lib/zakuro/era/japan/gengou/{yaml → resource/yaml}/set-001-until-south.yaml +2 -2
- data/lib/zakuro/era/japan/gengou/{yaml → resource/yaml}/set-002-from-north.yaml +2 -2
- data/lib/zakuro/era/japan/gengou/{yaml → resource/yaml}/set-003-modern.yaml +2 -2
- data/lib/zakuro/era/japan/gengou/resource.rb +32 -0
- data/lib/zakuro/era/japan/gengou.rb +34 -73
- data/lib/zakuro/era/japan/version.rb +18 -18
- data/lib/zakuro/merchant.rb +41 -3
- data/lib/zakuro/operation/month/validator.rb +1 -1
- data/lib/zakuro/result/result.rb +17 -0
- data/lib/zakuro/version/senmyou/README.md +11 -7
- metadata +32 -20
- data/lib/zakuro/calculation/gengou/internal/counter.rb +0 -129
- data/lib/zakuro/calculation/gengou/internal/reserve/interval.rb +0 -183
- data/lib/zakuro/calculation/gengou/internal/reserve/list.rb +0 -382
- data/lib/zakuro/era/japan/gengou/parser.rb +0 -237
- data/lib/zakuro/era/japan/gengou/type.rb +0 -285
- data/lib/zakuro/era/japan/gengou/validator.rb +0 -341
@@ -1,183 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative '../../../../era/western/calendar'
|
4
|
-
|
5
|
-
require_relative './list'
|
6
|
-
|
7
|
-
# :nodoc:
|
8
|
-
module Zakuro
|
9
|
-
# :nodoc:
|
10
|
-
module Calculation
|
11
|
-
# :nodoc:
|
12
|
-
module Gengou
|
13
|
-
# :nodoc:
|
14
|
-
module Reserve
|
15
|
-
# Interval
|
16
|
-
#
|
17
|
-
# 予約済み計算範囲
|
18
|
-
#
|
19
|
-
class Interval
|
20
|
-
# @return [List] 1行目元号
|
21
|
-
attr_reader :first_gengou
|
22
|
-
# @return [List] 2行目元号
|
23
|
-
attr_reader :second_gengou
|
24
|
-
|
25
|
-
#
|
26
|
-
# 初期化
|
27
|
-
#
|
28
|
-
# @param [Western::Calendar] start_date 西暦開始日
|
29
|
-
# @param [Western::Calendar] end_date 西暦終了日
|
30
|
-
#
|
31
|
-
def initialize(start_date: Western::Calendar.new, end_date: Western::Calendar.new)
|
32
|
-
@first_gengou = List.new(first: true, start_date: start_date, end_date: end_date)
|
33
|
-
@second_gengou = List.new(first: false, start_date: start_date, end_date: end_date)
|
34
|
-
end
|
35
|
-
|
36
|
-
#
|
37
|
-
# 不正か
|
38
|
-
#
|
39
|
-
# @return [True] 不正
|
40
|
-
# @return [False] 不正なし
|
41
|
-
#
|
42
|
-
def invalid?
|
43
|
-
@first_gengou.invalid?
|
44
|
-
end
|
45
|
-
|
46
|
-
#
|
47
|
-
# 1行目元号を取得する
|
48
|
-
#
|
49
|
-
# @param [Western::Calendar] western_date 西暦日
|
50
|
-
#
|
51
|
-
# @return [Gengou::Counter] 加算元号
|
52
|
-
#
|
53
|
-
def match_first_gengou(western_date: Western::Calendar.new)
|
54
|
-
@first_gengou.get(western_date: western_date)
|
55
|
-
end
|
56
|
-
|
57
|
-
#
|
58
|
-
# 2行目元号を取得する
|
59
|
-
#
|
60
|
-
# @param [Western::Calendar] western_date 西暦日
|
61
|
-
#
|
62
|
-
# @return [Gengou::Counter] 加算元号
|
63
|
-
#
|
64
|
-
def match_second_gengou(western_date: Western::Calendar.new)
|
65
|
-
@second_gengou.get(western_date: western_date)
|
66
|
-
end
|
67
|
-
|
68
|
-
#
|
69
|
-
# 範囲内元号(1行目元号)を取得する
|
70
|
-
#
|
71
|
-
# @param [Western::Calendar] start_date 西暦開始日
|
72
|
-
# @param [Western::Calendar] end_date 西暦終了日
|
73
|
-
#
|
74
|
-
# @return [Array<Gengou::Counter>] 範囲内元号(1行目元号)
|
75
|
-
#
|
76
|
-
def collect_first_gengou(start_date: Western::Calendar.new,
|
77
|
-
end_date: Western::Calendar.new)
|
78
|
-
@first_gengou.collect(start_date: start_date, end_date: end_date)
|
79
|
-
end
|
80
|
-
|
81
|
-
#
|
82
|
-
# 範囲内元号(2行目元号)を取得する
|
83
|
-
#
|
84
|
-
# @param [Western::Calendar] start_date 西暦開始日
|
85
|
-
# @param [Western::Calendar] end_date 西暦終了日
|
86
|
-
#
|
87
|
-
# @return [Array<Gengou::Counter>] 範囲内元号(2行目元号)
|
88
|
-
#
|
89
|
-
def collect_second_gengou(start_date: Western::Calendar.new,
|
90
|
-
end_date: Western::Calendar.new)
|
91
|
-
@second_gengou.collect(start_date: start_date, end_date: end_date)
|
92
|
-
end
|
93
|
-
|
94
|
-
#
|
95
|
-
# 最古の元号から和暦開始日を取得する
|
96
|
-
#
|
97
|
-
# @return [Japan::Calendar] 和暦開始日
|
98
|
-
#
|
99
|
-
def japan_start_date
|
100
|
-
gengou = oldest_gengou
|
101
|
-
|
102
|
-
return Japan::Calendar.new if gengou.invalid?
|
103
|
-
|
104
|
-
gengou.japan_start_date
|
105
|
-
end
|
106
|
-
|
107
|
-
#
|
108
|
-
# 最古の元号から西暦開始日を取得する
|
109
|
-
#
|
110
|
-
# @return [Western::Calendar] 西暦開始日
|
111
|
-
#
|
112
|
-
def western_start_date
|
113
|
-
gengou = oldest_gengou
|
114
|
-
|
115
|
-
return Western::Calendar.new if gengou.invalid?
|
116
|
-
|
117
|
-
gengou.western_start_date
|
118
|
-
end
|
119
|
-
|
120
|
-
#
|
121
|
-
# 開始西暦年を取得する
|
122
|
-
#
|
123
|
-
# @return [Integer] 開始西暦年
|
124
|
-
#
|
125
|
-
def western_start_year
|
126
|
-
first_start_year = @first_gengou.western_start_year
|
127
|
-
second_start_year = @second_gengou.western_start_year
|
128
|
-
|
129
|
-
return first_start_year if @first_gengou.invalid?
|
130
|
-
|
131
|
-
return first_start_year if @second_gengou.invalid?
|
132
|
-
|
133
|
-
return first_start_year if first_start_year < second_start_year
|
134
|
-
|
135
|
-
second_start_year
|
136
|
-
end
|
137
|
-
|
138
|
-
#
|
139
|
-
# 終了西暦年を取得する
|
140
|
-
#
|
141
|
-
# @return [Integer] 終了西暦年
|
142
|
-
#
|
143
|
-
def western_end_year
|
144
|
-
first_end_year = @first_gengou.western_end_year
|
145
|
-
second_end_year = @second_gengou.western_end_year
|
146
|
-
|
147
|
-
return first_end_year if @first_gengou.invalid?
|
148
|
-
|
149
|
-
return first_end_year if @second_gengou.invalid?
|
150
|
-
|
151
|
-
return first_end_year if first_end_year > second_end_year
|
152
|
-
|
153
|
-
second_end_year
|
154
|
-
end
|
155
|
-
|
156
|
-
private
|
157
|
-
|
158
|
-
#
|
159
|
-
# 最古の元号を取得する
|
160
|
-
#
|
161
|
-
# @return [Japan::Gengou] 最古の元号
|
162
|
-
#
|
163
|
-
def oldest_gengou
|
164
|
-
return @first_gengou if @first_gengou.invalid?
|
165
|
-
|
166
|
-
return @first_gengou if @second_gengou.invalid?
|
167
|
-
|
168
|
-
first_western_date = @first_gengou.western_start_date
|
169
|
-
second_western_date = @second_gengou.western_start_date
|
170
|
-
|
171
|
-
return @first_gengou if first_western_date.invalid?
|
172
|
-
|
173
|
-
return @first_gengou if second_western_date.invalid?
|
174
|
-
|
175
|
-
return @first_gengou if first_western_date < second_western_date
|
176
|
-
|
177
|
-
@second_gengou
|
178
|
-
end
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
end
|
183
|
-
end
|
@@ -1,382 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative '../../../../era/japan/gengou'
|
4
|
-
require_relative '../../../../era/japan/calendar'
|
5
|
-
require_relative '../../../../era/western/calendar'
|
6
|
-
|
7
|
-
require_relative '../counter'
|
8
|
-
|
9
|
-
# :nodoc:
|
10
|
-
module Zakuro
|
11
|
-
# :nodoc:
|
12
|
-
module Calculation
|
13
|
-
# :nodoc:
|
14
|
-
module Gengou
|
15
|
-
# :nodoc:
|
16
|
-
module Reserve
|
17
|
-
# List
|
18
|
-
#
|
19
|
-
# 予約元号一覧
|
20
|
-
#
|
21
|
-
class List
|
22
|
-
# TODO: refactor
|
23
|
-
|
24
|
-
# @return [Integer] 不正年
|
25
|
-
INVALID_YEAR = -1
|
26
|
-
# @return [Integer] 最大試行数
|
27
|
-
MAX_SEARCH_COUNT = 10_000
|
28
|
-
# @return [Integer] 最大月日数
|
29
|
-
MAX_MONTH_DAYS = 30
|
30
|
-
|
31
|
-
# @return [Symbol] メソッド名
|
32
|
-
attr_reader :method_name
|
33
|
-
# @return [Western::Calendar] 開始日
|
34
|
-
attr_reader :start_date
|
35
|
-
# @return [Western::Calendar] 終了日
|
36
|
-
attr_reader :end_date
|
37
|
-
# @return [Array<Japan::Gengou>] 予約元号一覧
|
38
|
-
attr_reader :list
|
39
|
-
|
40
|
-
#
|
41
|
-
# 初期化
|
42
|
-
#
|
43
|
-
# @param [True, False] first true:1行目元号, false:2行目元号
|
44
|
-
# @param [Western::Calendar] start_date 開始日
|
45
|
-
# @param [Western::Calendar] end_date 終了日
|
46
|
-
#
|
47
|
-
def initialize(first: true, start_date: Western::Calendar.new,
|
48
|
-
end_date: Western::Calendar)
|
49
|
-
@method_name = first ? :first_line : :second_line
|
50
|
-
@start_date = start_date
|
51
|
-
@end_date = end_date
|
52
|
-
@list = []
|
53
|
-
|
54
|
-
update
|
55
|
-
end
|
56
|
-
|
57
|
-
#
|
58
|
-
# 元号を取得する
|
59
|
-
#
|
60
|
-
# @param [Western::Calendar] western_date 西暦日
|
61
|
-
#
|
62
|
-
# @return [Gengou::Counter] 加算元号
|
63
|
-
#
|
64
|
-
def get(western_date: Western::Calendar.new)
|
65
|
-
@list.each do |gengou|
|
66
|
-
if gengou.include?(date: western_date)
|
67
|
-
return Gengou::Counter.new(gengou: gengou).clone
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
Gengou::Counter.new
|
72
|
-
end
|
73
|
-
|
74
|
-
#
|
75
|
-
# 範囲内元号を取得する
|
76
|
-
#
|
77
|
-
# 次のパターンが考えられる
|
78
|
-
# 1. 元号の開始日から終了日まで該当元号なし(無効な元号)
|
79
|
-
# 2. 元号の開始日までは該当元号なし(無効な元号、開始日以降の元号)
|
80
|
-
# 3. 元号の開始日と月初日が合致し、末日まで同一元号(開始日以降の元号のみ)
|
81
|
-
# 4. 月の途中で有効な元号が切り替わる(有効な元号、有効な元号...)
|
82
|
-
# 5. 途中から該当元号なし(開始日以降の元号、無効な元号)
|
83
|
-
#
|
84
|
-
# FIXME: 有効な元号、無効な元号、有効な元号のようなストライプのパターンに対応していない
|
85
|
-
#
|
86
|
-
# @param [Western::Calendar] start_date 西暦開始日
|
87
|
-
# @param [Western::Calendar] end_date 西暦終了日
|
88
|
-
#
|
89
|
-
# @return [Array<Gengou::Counter>] 範囲内元号
|
90
|
-
#
|
91
|
-
def collect(start_date: Western::Calendar.new, end_date: Western::Calendar.new)
|
92
|
-
result = []
|
93
|
-
|
94
|
-
# 開始チェック
|
95
|
-
current_gengou = get(western_date: start_date)
|
96
|
-
result.push(current_gengou)
|
97
|
-
|
98
|
-
## 範囲内に次の有効元号があるか
|
99
|
-
if current_gengou.invalid?
|
100
|
-
current_gengou = proceed(western_date: start_date)
|
101
|
-
|
102
|
-
return result if suspend?(current_gengou: current_gengou, end_date: end_date)
|
103
|
-
|
104
|
-
result.push(current_gengou)
|
105
|
-
end
|
106
|
-
|
107
|
-
return result if suspend?(current_gengou: current_gengou, end_date: end_date)
|
108
|
-
|
109
|
-
# 有効元号チェック
|
110
|
-
continue(result: result, current_date: current_gengou.western_end_date.clone,
|
111
|
-
end_date: end_date)
|
112
|
-
end
|
113
|
-
|
114
|
-
#
|
115
|
-
# 元号を進めて取得する
|
116
|
-
#
|
117
|
-
# @param [Western::Calendar] western_date 西暦日
|
118
|
-
#
|
119
|
-
# @return [Gengou::Counter] 加算元号
|
120
|
-
#
|
121
|
-
def proceed(western_date: Western::Calendar.new)
|
122
|
-
current_gengou = get(western_date: western_date)
|
123
|
-
|
124
|
-
# 無効な元号
|
125
|
-
if current_gengou.invalid?
|
126
|
-
@list.each do |gengou|
|
127
|
-
next if gengou.invalid?
|
128
|
-
|
129
|
-
# すでに超過している場合
|
130
|
-
break if western_date > gengou.end_date
|
131
|
-
|
132
|
-
return Gengou::Counter.new(gengou: gengou).clone
|
133
|
-
end
|
134
|
-
|
135
|
-
return Gengou::Counter.new
|
136
|
-
end
|
137
|
-
|
138
|
-
# 有効な元号
|
139
|
-
@list.each do |gengou|
|
140
|
-
next if gengou.invalid?
|
141
|
-
|
142
|
-
if gengou.both_start_date.western > current_gengou.western_end_date
|
143
|
-
return Gengou::Counter.new(gengou: gengou).clone
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
Gengou::Counter.new
|
148
|
-
end
|
149
|
-
|
150
|
-
#
|
151
|
-
# 和暦開始日を取得する
|
152
|
-
#
|
153
|
-
# @return [Japan::Calendar] 和暦開始日
|
154
|
-
#
|
155
|
-
def japan_start_date
|
156
|
-
return Japan::Calendar.new if invalid?
|
157
|
-
|
158
|
-
@list[0].both_start_date.japan.clone
|
159
|
-
end
|
160
|
-
|
161
|
-
#
|
162
|
-
# 西暦開始日を取得する
|
163
|
-
#
|
164
|
-
# @return [Western::Calendar] 西暦開始日
|
165
|
-
#
|
166
|
-
def western_start_date
|
167
|
-
return Western::Calendar.new if invalid?
|
168
|
-
|
169
|
-
@list[0].both_start_date.western.clone
|
170
|
-
end
|
171
|
-
|
172
|
-
#
|
173
|
-
# 西暦開始年を取得する
|
174
|
-
#
|
175
|
-
# @return [Integer] 西暦開始年
|
176
|
-
#
|
177
|
-
def western_start_year
|
178
|
-
return INVALID_YEAR if invalid?
|
179
|
-
|
180
|
-
@list[0].both_start_year.western.clone
|
181
|
-
end
|
182
|
-
|
183
|
-
#
|
184
|
-
# 西暦終了年を取得する
|
185
|
-
#
|
186
|
-
# @return [Integer] 西暦終了年
|
187
|
-
#
|
188
|
-
def western_end_year
|
189
|
-
return INVALID_YEAR if invalid?
|
190
|
-
|
191
|
-
return INVALID_YEAR if @list.size.zero?
|
192
|
-
|
193
|
-
@list[-1].end_year
|
194
|
-
end
|
195
|
-
|
196
|
-
#
|
197
|
-
# 不正か
|
198
|
-
#
|
199
|
-
# @return [True] 不正
|
200
|
-
# @return [False] 不正なし
|
201
|
-
#
|
202
|
-
def invalid?
|
203
|
-
return true unless @list
|
204
|
-
|
205
|
-
return true if @list.size.zero?
|
206
|
-
|
207
|
-
false
|
208
|
-
end
|
209
|
-
|
210
|
-
private
|
211
|
-
|
212
|
-
#
|
213
|
-
# 予約元号一覧を更新する
|
214
|
-
#
|
215
|
-
def update
|
216
|
-
result = internal
|
217
|
-
|
218
|
-
return result if result.size.zero?
|
219
|
-
|
220
|
-
prev_gengou(list: result)
|
221
|
-
|
222
|
-
next_gengou(list: result)
|
223
|
-
|
224
|
-
@list = result
|
225
|
-
end
|
226
|
-
|
227
|
-
#
|
228
|
-
# 開始日・終了日に対応する予約元号一覧を取得する
|
229
|
-
#
|
230
|
-
# @return [Array<Japan::Gengou>] 予約元号一覧
|
231
|
-
#
|
232
|
-
def internal
|
233
|
-
current_gengou = line(date: start_date)
|
234
|
-
result = []
|
235
|
-
|
236
|
-
return result if current_gengou.invalid?
|
237
|
-
|
238
|
-
result.push(current_gengou)
|
239
|
-
(0..MAX_SEARCH_COUNT).each do |_index|
|
240
|
-
current_end_date = current_gengou.end_date.clone
|
241
|
-
break if current_end_date > end_date
|
242
|
-
|
243
|
-
current_gengou = line(date: current_end_date + 1)
|
244
|
-
result.push(current_gengou)
|
245
|
-
end
|
246
|
-
|
247
|
-
result
|
248
|
-
end
|
249
|
-
|
250
|
-
#
|
251
|
-
# 前の元号を設定する
|
252
|
-
#
|
253
|
-
# @note 開始日の30日前に前の元号がある場合は、前の元号を設定する
|
254
|
-
#
|
255
|
-
# @param [Array<Japan::Gengou>] list 元号一覧
|
256
|
-
#
|
257
|
-
def prev_gengou(list:)
|
258
|
-
return unless list
|
259
|
-
|
260
|
-
return if list.size.zero?
|
261
|
-
|
262
|
-
first_gengou_date = list[0].both_start_date.western.clone
|
263
|
-
|
264
|
-
border_date = start_date.clone - MAX_MONTH_DAYS
|
265
|
-
|
266
|
-
return if first_gengou_date < border_date
|
267
|
-
|
268
|
-
gengou = line(date: first_gengou_date - 1)
|
269
|
-
|
270
|
-
return if gengou.invalid?
|
271
|
-
|
272
|
-
list.unshift(gengou)
|
273
|
-
end
|
274
|
-
|
275
|
-
#
|
276
|
-
# 次の元号を設定する
|
277
|
-
#
|
278
|
-
# @note 開始日の30日後に次の元号がある場合は、次の元号を設定する
|
279
|
-
#
|
280
|
-
# @param [Array<Japan::Gengou>] list 元号一覧
|
281
|
-
#
|
282
|
-
def next_gengou(list:)
|
283
|
-
return unless list
|
284
|
-
|
285
|
-
return if list.size.zero?
|
286
|
-
|
287
|
-
last_gengou_date = list[-1].end_date.clone
|
288
|
-
|
289
|
-
border_date = end_date.clone + MAX_MONTH_DAYS
|
290
|
-
|
291
|
-
return if border_date < last_gengou_date
|
292
|
-
|
293
|
-
gengou = line(date: last_gengou_date + 1)
|
294
|
-
|
295
|
-
return if gengou.invalid?
|
296
|
-
|
297
|
-
list.push(gengou)
|
298
|
-
end
|
299
|
-
|
300
|
-
#
|
301
|
-
# 元号
|
302
|
-
#
|
303
|
-
# @param [Western::Calendar] date 日付
|
304
|
-
#
|
305
|
-
# @return [Japan::Gengou] 元号
|
306
|
-
#
|
307
|
-
def line(date:)
|
308
|
-
List.send(method_name, **{ date: date })
|
309
|
-
end
|
310
|
-
|
311
|
-
#
|
312
|
-
# 有効元号を継続する
|
313
|
-
#
|
314
|
-
# @param [Array<Gengou::Counter>] result 範囲内元号
|
315
|
-
# @param [Gengou::Counter] current_gengou 現在元号
|
316
|
-
# @param [Western::Calendar] end_date 終了日
|
317
|
-
#
|
318
|
-
# @return [Array<Gengou::Counter>] 範囲内元号
|
319
|
-
#
|
320
|
-
def continue(result:, current_date:, end_date:)
|
321
|
-
(0..MAX_SEARCH_COUNT).each do |_index|
|
322
|
-
current_gengou = proceed(western_date: current_date)
|
323
|
-
|
324
|
-
return result if suspend?(current_gengou: current_gengou, end_date: end_date)
|
325
|
-
|
326
|
-
# 範囲内元号
|
327
|
-
result.push(current_gengou)
|
328
|
-
|
329
|
-
current_date = current_gengou.western_end_date.clone
|
330
|
-
end
|
331
|
-
|
332
|
-
# 終了
|
333
|
-
result
|
334
|
-
end
|
335
|
-
|
336
|
-
#
|
337
|
-
# 中断する
|
338
|
-
#
|
339
|
-
# @param [Gengou::Counter] current_gengou 現在元号
|
340
|
-
# @param [Western::Calendar] end_date 終了日
|
341
|
-
#
|
342
|
-
# @return [True] 中断
|
343
|
-
# @return [False] 継続
|
344
|
-
#
|
345
|
-
def suspend?(current_gengou:, end_date:)
|
346
|
-
## 有効元号なし
|
347
|
-
return true if current_gengou.invalid?
|
348
|
-
|
349
|
-
## 範囲内元号なし
|
350
|
-
return true if current_gengou.western_start_date > end_date
|
351
|
-
|
352
|
-
false
|
353
|
-
end
|
354
|
-
|
355
|
-
#
|
356
|
-
# 1行目元号
|
357
|
-
#
|
358
|
-
# @param [Western::Calendar] date 日付
|
359
|
-
#
|
360
|
-
# @return [Japan::Gengou] 1行目元号
|
361
|
-
#
|
362
|
-
def self.first_line(date:)
|
363
|
-
Zakuro::Japan::GengouResource.first_line(date: date)
|
364
|
-
end
|
365
|
-
private_class_method :first_line
|
366
|
-
|
367
|
-
#
|
368
|
-
# 2行目元号
|
369
|
-
#
|
370
|
-
# @param [Western::Calendar] date 日付
|
371
|
-
#
|
372
|
-
# @return [Japan::Gengou] 2行目元号
|
373
|
-
#
|
374
|
-
def self.second_line(date:)
|
375
|
-
Zakuro::Japan::GengouResource.second_line(date: date)
|
376
|
-
end
|
377
|
-
private_class_method :second_line
|
378
|
-
end
|
379
|
-
end
|
380
|
-
end
|
381
|
-
end
|
382
|
-
end
|