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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -3
  3. data/VERSION +1 -1
  4. data/lib/zakuro/calculation/base/gengou.rb +4 -4
  5. data/lib/zakuro/calculation/base/linear_gengou.rb +6 -6
  6. data/lib/zakuro/calculation/era/gengou/internal/connector.rb +107 -0
  7. data/lib/zakuro/calculation/era/gengou/internal/counter.rb +214 -0
  8. data/lib/zakuro/calculation/era/gengou/internal/publisher.rb +104 -0
  9. data/lib/zakuro/calculation/era/gengou/internal/reserve/list.rb +244 -0
  10. data/lib/zakuro/calculation/era/gengou/internal/reserve/range.rb +193 -0
  11. data/lib/zakuro/calculation/{gengou → era/gengou}/internal/reserve.rb +6 -6
  12. data/lib/zakuro/calculation/{gengou → era/gengou}/scroll.rb +44 -95
  13. data/lib/zakuro/calculation/{version → era/version}/internal/crawler.rb +7 -7
  14. data/lib/zakuro/calculation/{version → era/version}/internal/range.rb +4 -4
  15. data/lib/zakuro/calculation/{version → era/version}/version.rb +3 -3
  16. data/lib/zakuro/calculation/monthly/month.rb +2 -2
  17. data/lib/zakuro/calculation/range/full_range.rb +18 -19
  18. data/lib/zakuro/calculation/range/operated_range.rb +3 -4
  19. data/lib/zakuro/calculation/specifier/internal/month.rb +84 -0
  20. data/lib/zakuro/calculation/specifier/multiple_day.rb +162 -0
  21. data/lib/zakuro/calculation/specifier/single_day.rb +2 -2
  22. data/lib/zakuro/calculation/summary/internal/operation.rb +98 -0
  23. data/lib/zakuro/calculation/summary/range.rb +120 -0
  24. data/lib/zakuro/calculation/summary/single.rb +45 -67
  25. data/lib/zakuro/condition.rb +14 -0
  26. data/lib/zakuro/era/japan/gengou/alignment/aligner.rb +106 -0
  27. data/lib/zakuro/era/japan/gengou/alignment/division.rb +165 -0
  28. data/lib/zakuro/era/japan/gengou/alignment/line.rb +156 -0
  29. data/lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb +184 -0
  30. data/lib/zakuro/era/japan/gengou/alignment.rb +42 -0
  31. data/lib/zakuro/era/japan/gengou/resource/parser.rb +242 -0
  32. data/lib/zakuro/era/japan/gengou/resource/type.rb +292 -0
  33. data/lib/zakuro/era/japan/gengou/resource/validator.rb +346 -0
  34. data/lib/zakuro/era/japan/gengou/{yaml → resource/yaml}/set-001-until-south.yaml +2 -2
  35. data/lib/zakuro/era/japan/gengou/{yaml → resource/yaml}/set-002-from-north.yaml +2 -2
  36. data/lib/zakuro/era/japan/gengou/{yaml → resource/yaml}/set-003-modern.yaml +2 -2
  37. data/lib/zakuro/era/japan/gengou/resource.rb +32 -0
  38. data/lib/zakuro/era/japan/gengou.rb +34 -73
  39. data/lib/zakuro/era/japan/version.rb +18 -18
  40. data/lib/zakuro/merchant.rb +41 -3
  41. data/lib/zakuro/operation/month/validator.rb +1 -1
  42. data/lib/zakuro/result/result.rb +17 -0
  43. data/lib/zakuro/version/senmyou/README.md +11 -7
  44. metadata +32 -20
  45. data/lib/zakuro/calculation/gengou/internal/counter.rb +0 -129
  46. data/lib/zakuro/calculation/gengou/internal/reserve/interval.rb +0 -183
  47. data/lib/zakuro/calculation/gengou/internal/reserve/list.rb +0 -382
  48. data/lib/zakuro/era/japan/gengou/parser.rb +0 -237
  49. data/lib/zakuro/era/japan/gengou/type.rb +0 -285
  50. data/lib/zakuro/era/japan/gengou/validator.rb +0 -341
@@ -1,341 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../japan/calendar'
4
- require_relative '../../western/calendar'
5
- require_relative './type'
6
- require 'yaml'
7
-
8
- # :nodoc:
9
- module Zakuro
10
- #
11
- # Japan 和暦
12
- #
13
- module Japan
14
- #
15
- # Validator yaml解析
16
- #
17
- module Validator
18
- #
19
- # Set 元号セット情報の検証/展開
20
- #
21
- class Set
22
- # @return [String] 元号セットID
23
- attr_reader :id
24
- # @return [String] 元号セット名
25
- attr_reader :name
26
- # @return [Hash<String, String>] 終了年
27
- attr_reader :both_end_year
28
- # @return [Hash<String, String>] 終了日
29
- attr_reader :both_end_date
30
- # @return [Array<Hash<String, String>>] 元号情報
31
- attr_reader :list
32
-
33
- #
34
- # 初期化
35
- #
36
- # @param [Hash<String, Object>] hash 元号セット情報
37
- #
38
- def initialize(hash:)
39
- @id = hash['id']
40
- @name = hash['name']
41
- @both_end_year = hash['end_year']
42
- @both_end_date = hash['end_date']
43
- @list = hash['list']
44
- end
45
-
46
- #
47
- # 検証する
48
- #
49
- # @return [Array<String>] 不正メッセージ
50
- #
51
- def validate
52
- failed = []
53
- failed.push("invalid id. #{@id}") unless id?
54
-
55
- failed.push("invalid name. #{@name}") unless name?
56
-
57
- failed |= validate_both_end_year
58
-
59
- failed |= validate_both_end_date
60
-
61
- failed |= validate_list
62
- failed
63
- end
64
-
65
- #
66
- # IDを検証する
67
- #
68
- # @return [True] 正しい
69
- # @return [False] 正しくない
70
- #
71
- def id?
72
- return false unless @id
73
-
74
- @id.is_a?(Integer)
75
- end
76
-
77
- #
78
- # 元号セット名を検証する
79
- #
80
- # @return [True] 正しい
81
- # @return [False] 正しくない
82
- #
83
- def name?
84
- return false unless @name
85
-
86
- @name.is_a?(String)
87
- end
88
-
89
- #
90
- # 終了年を検証する
91
- #
92
- # @return [Array<String>] 不正メッセージ
93
- #
94
- def validate_both_end_year
95
- Both::Year.new(hash: @both_end_year).validate
96
- end
97
-
98
- #
99
- # 終了日を検証する
100
- #
101
- # @return [Array<String>] 不正メッセージ
102
- #
103
- def validate_both_end_date
104
- Both::Date.new(hash: @both_end_date).validate
105
- end
106
-
107
- #
108
- # 元号情報を検証する
109
- #
110
- # @return [True] 正しい
111
- # @return [False] 正しくない
112
- #
113
- def list?
114
- return false unless @list
115
-
116
- @list.is_a?(Array)
117
- end
118
-
119
- #
120
- # 元号情報を検証する
121
- #
122
- # @return [Array<String>] 不正メッセージ
123
- #
124
- def validate_list
125
- return ["invalid list. #{@list.class}"] unless list?
126
-
127
- failed = []
128
- list.each_with_index do |li, index|
129
- failed |= Gengou.new(hash: li, index: index).validate
130
- end
131
- failed
132
- end
133
- end
134
-
135
- #
136
- # Gengou 元号情報
137
- #
138
- class Gengou
139
- # @return [Integer] 要素位置
140
- attr_reader :index
141
- # @return [String] 元号名
142
- attr_reader :name
143
- # @return [Hash<String, String>] 開始年
144
- attr_reader :both_start_year
145
- # @return [Hash<String, String>] 開始日
146
- attr_reader :both_start_date
147
-
148
- #
149
- # 初期化
150
- #
151
- # @param [Hash<String, Strin>] hash 元号情報
152
- # @param [Integer] index (元号セット内での)元号の要素位置
153
- #
154
- def initialize(hash:, index:)
155
- @index = index
156
- @name = hash['name']
157
- @both_start_year = hash['start_year']
158
- @both_start_date = hash['start_date']
159
- end
160
-
161
- #
162
- # 検証する
163
- #
164
- # @return [Array<String>] 不正メッセージ
165
- #
166
- def validate
167
- prefix = "list[#{index}]. "
168
- failed = []
169
-
170
- failed.push(prefix + "invalid name. #{@name}") unless name?
171
-
172
- failed |= validate_both_start_year
173
-
174
- failed |= validate_both_start_date
175
-
176
- failed
177
- end
178
-
179
- #
180
- # 元号名を検証する
181
- #
182
- # @return [True] 正しい
183
- # @return [False] 正しくない
184
- #
185
- def name?
186
- return false unless @name
187
-
188
- @name.is_a?(String)
189
- end
190
-
191
- #
192
- # 開始年を検証する
193
- #
194
- # @return [Array<String>] 不正メッセージ
195
- #
196
- def validate_both_start_year
197
- Both::Year.new(hash: @both_start_year).validate
198
- end
199
-
200
- #
201
- # 開始日を検証する
202
- #
203
- # @return [Array<String>] 不正メッセージ
204
- #
205
- def validate_both_start_date
206
- Both::Date.new(hash: @both_start_date).validate
207
- end
208
- end
209
-
210
- #
211
- # 和暦/西暦
212
- #
213
- module Both
214
- #
215
- # Year 年
216
- #
217
- class Year
218
- # @return [String] 和暦元号年
219
- attr_reader :japan
220
- # @return [String] 西暦年
221
- attr_reader :western
222
-
223
- #
224
- # 初期化
225
- #
226
- # @param [Hash<String, Strin>] hash 年情報
227
- #
228
- def initialize(hash:)
229
- @japan = hash['japan']
230
- @western = hash['western']
231
- end
232
-
233
- #
234
- # 検証する
235
- #
236
- # @return [Array<String>] 不正メッセージ
237
- #
238
- def validate
239
- failed = []
240
-
241
- failed.push("invalid japan year. #{@japan}") unless japan?
242
-
243
- failed.push("invalid western year. #{@western}") unless western?
244
-
245
- failed
246
- end
247
-
248
- #
249
- # 和暦元号年を検証する
250
- #
251
- # @return [True] 正しい
252
- # @return [False] 正しくない
253
- #
254
- def japan?
255
- return false unless @japan
256
-
257
- @japan.is_a?(Integer)
258
- end
259
-
260
- #
261
- # 和暦元号年を検証する
262
- #
263
- # @return [True] 正しい
264
- # @return [False] 正しくない
265
- #
266
- def western?
267
- return false unless @western
268
-
269
- @western.is_a?(Integer)
270
- end
271
- end
272
-
273
- #
274
- # Date 日
275
- #
276
- class Date
277
- # @return [String] 和暦日
278
- attr_reader :japan
279
- # @return [String] 西暦日
280
- attr_reader :western
281
-
282
- #
283
- # 初期化
284
- #
285
- # @param [Hash<String, Strin>] hash 日情報
286
- #
287
- def initialize(hash:)
288
- @japan = hash['japan']
289
- @western = hash['western']
290
- end
291
-
292
- #
293
- # 検証する
294
- #
295
- # @return [Array<String>] 不正メッセージ
296
- #
297
- def validate
298
- failed = []
299
-
300
- failed.push("invalid japan date. #{@japan}") unless japan?
301
-
302
- failed.push("invalid western date. #{@western}") unless western?
303
-
304
- failed
305
- end
306
-
307
- #
308
- # 和暦日を検証する
309
- #
310
- # @return [True] 正しい
311
- # @return [False] 正しくない
312
- #
313
- def japan?
314
- Japan::Calendar.valid_date_string(text: @japan)
315
- end
316
-
317
- #
318
- # 西暦日を検証する
319
- #
320
- # @return [True] 正しい
321
- # @return [False] 正しくない
322
- #
323
- def western?
324
- Western::Calendar.valid_date_string(str: @western)
325
- end
326
- end
327
- end
328
-
329
- #
330
- # 検証する
331
- #
332
- # @param [Hash<String, Object>] yaml_hash yaml取得結果
333
- #
334
- # @return [Array<String>] 不正メッセージ
335
- #
336
- def self.run(yaml_hash:)
337
- Set.new(hash: yaml_hash).validate
338
- end
339
- end
340
- end
341
- end