zakuro 0.6.0 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +3 -0
  3. data/README.md +58 -16
  4. data/VERSION +1 -1
  5. data/doc/dropped_date.md +93 -0
  6. data/doc/error.md +45 -0
  7. data/doc/operation/transfer.rb +8 -8
  8. data/lib/zakuro/calculation/base/day.rb +52 -0
  9. data/lib/zakuro/calculation/base/gengou.rb +50 -4
  10. data/lib/zakuro/calculation/base/linear_gengou.rb +6 -6
  11. data/lib/zakuro/calculation/base/operated_year.rb +3 -3
  12. data/lib/zakuro/calculation/base/year.rb +4 -4
  13. data/lib/zakuro/calculation/cycle/abstract_remainder.rb +5 -3
  14. data/lib/zakuro/calculation/era/gengou/abstract_scroll.rb +209 -0
  15. data/lib/zakuro/calculation/era/gengou/dated_scroll.rb +30 -0
  16. data/lib/zakuro/calculation/era/gengou/internal/connector.rb +107 -0
  17. data/lib/zakuro/calculation/era/gengou/internal/counter.rb +214 -0
  18. data/lib/zakuro/calculation/era/gengou/internal/publisher.rb +104 -0
  19. data/lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb +230 -0
  20. data/lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb +193 -0
  21. data/lib/zakuro/calculation/era/gengou/internal/reserve/dated_list.rb +48 -0
  22. data/lib/zakuro/calculation/era/gengou/internal/reserve/dated_range.rb +30 -0
  23. data/lib/zakuro/calculation/era/gengou/internal/reserve/empty_link.rb +158 -0
  24. data/lib/zakuro/calculation/era/gengou/internal/reserve/named_list.rb +125 -0
  25. data/lib/zakuro/calculation/era/gengou/internal/reserve/named_range.rb +75 -0
  26. data/lib/zakuro/calculation/{gengou → era/gengou}/internal/reserve.rb +6 -7
  27. data/lib/zakuro/calculation/era/gengou/named_scroll.rb +30 -0
  28. data/lib/zakuro/calculation/{version → era/version}/internal/crawler.rb +7 -7
  29. data/lib/zakuro/calculation/{version → era/version}/internal/range.rb +4 -4
  30. data/lib/zakuro/calculation/{version → era/version}/version.rb +3 -3
  31. data/lib/zakuro/calculation/monthly/initialized_month.rb +1 -1
  32. data/lib/zakuro/calculation/monthly/month.rb +44 -5
  33. data/lib/zakuro/calculation/monthly/operated_month.rb +2 -2
  34. data/lib/zakuro/calculation/option/dropped_date/abstract_parameter.rb +44 -0
  35. data/lib/zakuro/calculation/option/dropped_date/location.rb +135 -0
  36. data/lib/zakuro/calculation/range/{full_range.rb → abstract_full_range.rb} +29 -27
  37. data/lib/zakuro/calculation/range/{operated_range.rb → abstract_operation_range.rb} +11 -14
  38. data/lib/zakuro/calculation/range/dated_full_range.rb +32 -0
  39. data/lib/zakuro/calculation/range/dated_operation_range.rb +33 -0
  40. data/lib/zakuro/calculation/range/medieval_annual_range.rb +2 -2
  41. data/lib/zakuro/calculation/range/named_full_range.rb +38 -0
  42. data/lib/zakuro/calculation/range/named_operation_range.rb +36 -0
  43. data/lib/zakuro/calculation/range/operated_solar_terms.rb +9 -11
  44. data/lib/zakuro/calculation/range/transfer/year_boundary.rb +6 -6
  45. data/lib/zakuro/calculation/stella/solar/abstract_location.rb +2 -0
  46. data/lib/zakuro/calculation/summary/internal/day.rb +40 -0
  47. data/lib/zakuro/calculation/summary/internal/month.rb +92 -0
  48. data/lib/zakuro/calculation/summary/{single.rb → internal/operation.rb} +6 -40
  49. data/lib/zakuro/calculation/summary/internal/option.rb +85 -0
  50. data/lib/zakuro/calculation/summary/japan/range.rb +158 -0
  51. data/lib/zakuro/calculation/summary/japan/single.rb +118 -0
  52. data/lib/zakuro/calculation/summary/japan/specifier/single_day.rb +96 -0
  53. data/lib/zakuro/calculation/summary/western/range.rb +124 -0
  54. data/lib/zakuro/calculation/summary/western/single.rb +113 -0
  55. data/lib/zakuro/calculation/summary/western/specifier/multiple_day.rb +174 -0
  56. data/lib/zakuro/calculation/summary/western/specifier/single_day.rb +98 -0
  57. data/lib/zakuro/calculation/type/optional.rb +46 -0
  58. data/lib/zakuro/condition.rb +75 -22
  59. data/lib/zakuro/context/context.rb +44 -0
  60. data/lib/zakuro/context/option.rb +117 -0
  61. data/lib/zakuro/context/version_class_resolver.rb +110 -0
  62. data/lib/zakuro/era/japan/gengou/alignment/aligner.rb +125 -0
  63. data/lib/zakuro/era/japan/gengou/alignment/division.rb +168 -0
  64. data/lib/zakuro/era/japan/gengou/alignment/line.rb +175 -0
  65. data/lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb +187 -0
  66. data/lib/zakuro/era/japan/gengou/alignment.rb +55 -0
  67. data/lib/zakuro/era/japan/gengou/resource/parser.rb +245 -0
  68. data/lib/zakuro/era/japan/gengou/resource/type.rb +299 -0
  69. data/lib/zakuro/era/japan/gengou/resource/validator.rb +347 -0
  70. data/lib/zakuro/era/japan/gengou/{yaml → resource/yaml}/set-001-until-south.yaml +2 -2
  71. data/lib/zakuro/era/japan/gengou/{yaml → resource/yaml}/set-002-from-north.yaml +2 -2
  72. data/lib/zakuro/era/japan/gengou/{yaml → resource/yaml}/set-003-modern.yaml +2 -2
  73. data/lib/zakuro/era/japan/gengou/resource.rb +33 -0
  74. data/lib/zakuro/era/japan/gengou.rb +25 -79
  75. data/lib/zakuro/era/japan/version.rb +18 -18
  76. data/lib/zakuro/era/western/calendar.rb +13 -9
  77. data/lib/zakuro/exception/case/pattern.rb +71 -0
  78. data/lib/zakuro/exception/case/preset.rb +51 -0
  79. data/lib/zakuro/exception/case/template.rb +48 -0
  80. data/lib/zakuro/exception/cause.rb +28 -0
  81. data/lib/zakuro/exception/exception.rb +37 -0
  82. data/lib/zakuro/exception/zakuro_error.rb +46 -0
  83. data/lib/zakuro/gateway/locale/date.rb +127 -0
  84. data/lib/zakuro/gateway/locale/range.rb +67 -0
  85. data/lib/zakuro/gateway/range.rb +99 -0
  86. data/lib/zakuro/gateway/single.rb +70 -0
  87. data/lib/zakuro/merchant.rb +84 -12
  88. data/lib/zakuro/operation/month/parser.rb +11 -9
  89. data/lib/zakuro/operation/month/type.rb +31 -31
  90. data/lib/zakuro/operation/month/validator.rb +50 -50
  91. data/lib/zakuro/operation/yaml/month.yaml +3736 -3736
  92. data/lib/zakuro/output/logger.rb +17 -3
  93. data/lib/zakuro/output/response.rb +24 -57
  94. data/lib/zakuro/result/data/day.rb +43 -0
  95. data/lib/zakuro/result/data/gengou.rb +35 -0
  96. data/lib/zakuro/result/data/month.rb +63 -0
  97. data/lib/zakuro/result/data/option/abstract_option.rb +37 -0
  98. data/lib/zakuro/result/data/option/dropped_date/calculation.rb +47 -0
  99. data/lib/zakuro/result/data/option/dropped_date/option.rb +47 -0
  100. data/lib/zakuro/result/data/option/dropped_date/solar_term.rb +48 -0
  101. data/lib/zakuro/result/data/single_day.rb +56 -0
  102. data/lib/zakuro/result/data/solar_term.rb +35 -0
  103. data/lib/zakuro/result/data/year.rb +45 -0
  104. data/lib/zakuro/result/operation/bundle.rb +44 -0
  105. data/lib/zakuro/result/operation/month/annotation.rb +40 -0
  106. data/lib/zakuro/result/operation/month/bundle.rb +36 -0
  107. data/lib/zakuro/result/operation/month/history.rb +54 -0
  108. data/lib/zakuro/result/result.rb +21 -2
  109. data/lib/zakuro/tools/stringifier.rb +26 -3
  110. data/lib/zakuro/version/daien/cycle/remainder.rb +2 -2
  111. data/lib/zakuro/version/daien/option/dropped_date/parameter.rb +31 -0
  112. data/lib/zakuro/version/daien/range/annual_range.rb +1 -1
  113. data/lib/zakuro/version/daien/stella/lunar/adjustment.rb +2 -0
  114. data/lib/zakuro/version/daien/stella/lunar/value.rb +2 -0
  115. data/lib/zakuro/version/genka/cycle/remainder.rb +2 -2
  116. data/lib/zakuro/version/genka/option/dropped_date/parameter.rb +31 -0
  117. data/lib/zakuro/version/genka/range/annual_range.rb +1 -1
  118. data/lib/zakuro/version/gihou/cycle/remainder.rb +2 -2
  119. data/lib/zakuro/version/gihou/option/dropped_date/parameter.rb +31 -0
  120. data/lib/zakuro/version/gihou/range/annual_range.rb +1 -1
  121. data/lib/zakuro/version/gihou/stella/lunar/adjustment.rb +2 -0
  122. data/lib/zakuro/version/gihou/stella/lunar/value.rb +2 -0
  123. data/lib/zakuro/version/senmyou/README.md +11 -7
  124. data/lib/zakuro/version/senmyou/const/remainder.rb +5 -0
  125. data/lib/zakuro/version/senmyou/cycle/remainder.rb +37 -2
  126. data/lib/zakuro/version/senmyou/option/dropped_date/parameter.rb +33 -0
  127. data/lib/zakuro/version/senmyou/range/annual_range.rb +1 -1
  128. data/lib/zakuro/version/senmyou/stella/lunar/adjustment.rb +2 -0
  129. data/lib/zakuro/version/senmyou/stella/lunar/value.rb +2 -0
  130. metadata +85 -24
  131. data/lib/zakuro/calculation/gengou/internal/counter.rb +0 -129
  132. data/lib/zakuro/calculation/gengou/internal/reserve/interval.rb +0 -183
  133. data/lib/zakuro/calculation/gengou/internal/reserve/list.rb +0 -382
  134. data/lib/zakuro/calculation/gengou/scroll.rb +0 -262
  135. data/lib/zakuro/calculation/specifier/single_day.rb +0 -87
  136. data/lib/zakuro/era/japan/gengou/parser.rb +0 -237
  137. data/lib/zakuro/era/japan/gengou/type.rb +0 -285
  138. data/lib/zakuro/era/japan/gengou/validator.rb +0 -341
  139. data/lib/zakuro/result/data.rb +0 -187
  140. data/lib/zakuro/result/operation.rb +0 -114
  141. data/lib/zakuro/version/context.rb +0 -44
  142. data/lib/zakuro/version/version_class_resolver.rb +0 -74
@@ -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
@@ -1,187 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative './core'
4
-
5
- # :nodoc:
6
- module Zakuro
7
- #
8
- # Result 演算結果
9
- #
10
- module Result
11
- #
12
- # データ部
13
- #
14
- module Data
15
- #
16
- # SingleDay 1日
17
- #
18
- class SingleDay < Core
19
- # @return [Year] 年
20
- attr_reader :year
21
- # @return [Month] 月
22
- attr_reader :month
23
- # @return [Day] 日
24
- attr_reader :day
25
-
26
- #
27
- # 初期化
28
- #
29
- # @param [Year] year 年
30
- # @param [Month] month 月
31
- # @param [Day] day 日
32
- #
33
- def initialize(year:, month:, day:)
34
- super
35
- @year = year
36
- @month = month
37
- @day = day
38
- end
39
- end
40
-
41
- #
42
- # Gengou 元号
43
- #
44
- class Gengou
45
- # @return [String] 元号名
46
- attr_reader :name
47
- # @return [Integer] 元号年
48
- attr_reader :number
49
-
50
- #
51
- # 初期化
52
- #
53
- # @param [String] name 元号名
54
- # @param [Integer] number 元号年
55
- #
56
- def initialize(name: '', number: -1)
57
- @name = name
58
- @number = number
59
- end
60
- end
61
-
62
- #
63
- # Year 年
64
- #
65
- class Year
66
- # @return [Gengou] 元号(1行目)
67
- attr_reader :first_gengou
68
- # @return [Gengou] 元号(2行目)
69
- attr_reader :second_gengou
70
- # @return [String] 十干十二支
71
- attr_reader :zodiac_name
72
- # @return [Integer] 日数
73
- attr_reader :total_days
74
-
75
- #
76
- # 初期化
77
- #
78
- # @param [Gengou] first_gengou 元号(1行目)
79
- # @param [Gengou] second_gengou 元号(2行目)
80
- # @param [String] zodiac_name 十干十二支
81
- # @param [Integer] total_days 日数
82
- #
83
- def initialize(first_gengou:, second_gengou:, zodiac_name:, total_days:)
84
- @first_gengou = first_gengou
85
- @second_gengou = second_gengou
86
- @zodiac_name = zodiac_name
87
- @total_days = total_days
88
- end
89
- end
90
-
91
- #
92
- # SolarTerm 二十四節気
93
- #
94
- class SolarTerm
95
- # @return [Integer] 連番
96
- attr_reader :index
97
- # @return [String] 大余小余
98
- attr_reader :remainder
99
-
100
- #
101
- # 初期化
102
- #
103
- # @param [Integer] index 連番
104
- # @param [String] remainder 大余小余
105
- #
106
- def initialize(index:, remainder:)
107
- @index = index
108
- @remainder = remainder
109
- end
110
- end
111
-
112
- # :reek:TooManyInstanceVariables { max_instance_variables: 6 }
113
-
114
- #
115
- # Month 月
116
- #
117
- class Month
118
- # @return [Integer] 月順(1-12)
119
- attr_reader :number
120
- # @return [True] 閏月
121
- # @return [False] 平月
122
- attr_reader :leaped
123
- # @return [String] 月の大小
124
- attr_reader :days_name
125
- # @return [Day] 月初日データ
126
- attr_reader :first_day
127
- # @return [SolarTerm] 二十四節気(節気)
128
- attr_reader :odd_solar_terms
129
- # @return [SolarTerm] 二十四節気(中気)
130
- attr_reader :even_solar_terms
131
-
132
- # rubocop:disable Metrics/ParameterLists
133
- # :reek:LongParameterList { max_params: 6 }
134
-
135
- #
136
- # 初期化
137
- #
138
- # @param [Integer] number 月順(1-12)
139
- # @param [True, False] leaped 閏月/平月
140
- # @param [String] days_name 月の大小
141
- # @param [Day] first_day 月初日データ
142
- # @param [SolarTerm] odd_solar_terms 二十四節気(節気)
143
- # @param [SolarTerm] even_solar_terms 二十四節気(中気)
144
- #
145
- def initialize(number:, leaped:, days_name:, first_day:,
146
- odd_solar_terms:, even_solar_terms:)
147
- @number = number
148
- @leaped = leaped
149
- @days_name = days_name
150
- @first_day = first_day
151
- @odd_solar_terms = odd_solar_terms
152
- @even_solar_terms = even_solar_terms
153
- end
154
- # rubocop:enable Metrics/ParameterLists
155
- end
156
-
157
- #
158
- # Day 日
159
- #
160
- class Day
161
- # @return [Integer] 月初日から数えた日(M月d日のdに相当)
162
- attr_reader :number
163
- # @return [String] 十干十二支
164
- attr_reader :zodiac_name
165
- # @return [String] 大余小余
166
- attr_reader :remainder
167
- # @return [String] 年月日
168
- attr_reader :western_date
169
-
170
- #
171
- # 初期化
172
- #
173
- # @param [Integer] number 月初日から数えた日(M月d日のdに相当)
174
- # @param [String] zodiac_name 十干十二支
175
- # @param [String] remainder 大余小余
176
- # @param [String] western_date 年月日
177
- #
178
- def initialize(number:, zodiac_name:, remainder:, western_date:)
179
- @number = number
180
- @zodiac_name = zodiac_name
181
- @remainder = remainder
182
- @western_date = western_date
183
- end
184
- end
185
- end
186
- end
187
- end
@@ -1,114 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # :nodoc:
4
- module Zakuro
5
- #
6
- # Result 演算結果
7
- #
8
- module Result
9
- #
10
- # 運用情報
11
- #
12
- module Operation
13
- #
14
- # Bundle 運用情報
15
- #
16
- class Bundle
17
- # @return [True] 運用あり
18
- # @return [False] 運用なし
19
- attr_reader :operated
20
- # @return [Month::Bundle] 月別履歴情報
21
- attr_reader :month
22
- # @return [Data::SingleDay] 計算値
23
- attr_reader :original
24
-
25
- #
26
- # 初期化
27
- #
28
- # @param [True, False] operated 運用有無
29
- # @param [Month::Bundle] month 月別履歴情報
30
- # @param [Data::SingleDay] original 計算値
31
- #
32
- def initialize(operated:, month:, original:)
33
- @operated = operated
34
- @month = month
35
- @original = original
36
- end
37
- end
38
-
39
- #
40
- # Month 運用情報(月)
41
- #
42
- module Month
43
- #
44
- # Bundle 月履歴集約情報
45
- #
46
- class Bundle
47
- # @return [History] 月別履歴情報(当月)
48
- attr_reader :current
49
- # @return [History] 月別履歴情報(影響を与えた月)
50
- attr_reader :parent
51
-
52
- def initialize(current: History.new, parent: History.new)
53
- @current = current
54
- @parent = parent
55
- end
56
- end
57
-
58
- #
59
- # History 月別履歴情報
60
- #
61
- class History
62
- # @return [String] ID
63
- attr_reader :id
64
- # @return [String] 月初日の西暦日
65
- attr_reader :western_date
66
- # @return [Integer] 原文頁数
67
- attr_reader :page
68
- # @return [Integer] 原文注釈番号
69
- attr_reader :number
70
- # @return [Array<Zakuro::Result::Operation::Annotation>] 注釈
71
- attr_reader :annotations
72
-
73
- #
74
- # 初期化
75
- #
76
- # @param [String] id ID
77
- # @param [String] western_date 月初日の西暦日
78
- # @param [Integer] page 原文頁数
79
- # @param [Integer] number 原文注釈番号
80
- # @param [Array<Annotation>] annotations 注釈
81
- #
82
- def initialize(id: '', western_date: '', page: -1, number: -1, annotations: [])
83
- @id = id
84
- @western_date = western_date
85
- @page = page
86
- @number = number
87
- @annotations = annotations
88
- end
89
- end
90
-
91
- #
92
- # Annotation 注釈
93
- #
94
- class Annotation
95
- # @return [String] 注釈内容
96
- attr_reader :description
97
- # @return [String] 注釈補記
98
- attr_reader :note
99
-
100
- #
101
- # 初期化
102
- #
103
- # @param [String] description 注釈内容
104
- # @param [<Type>] note 注釈補記
105
- #
106
- def initialize(description:, note:)
107
- @description = description
108
- @note = note
109
- end
110
- end
111
- end
112
- end
113
- end
114
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative './version_class_resolver'
4
-
5
- # :nodoc:
6
- module Zakuro
7
- #
8
- # Context 暦コンテキスト
9
- #
10
- class Context
11
- # @return [String] 暦名
12
- attr_reader :version_name
13
- # @return [VersionClassResolver] 暦リゾルバー
14
- attr_reader :resolver
15
-
16
- # @return [Array<String>] 暦名
17
- VERSION_NAMES = %w[Genka Gihou Daien Senmyou Joukyou Kansei Tenpou Gregorio].freeze
18
-
19
- #
20
- # 初期化
21
- #
22
- # @param [String] version_name 暦名
23
- #
24
- def initialize(version_name: '')
25
- @version_name = version_name
26
-
27
- if !invalid? && !VERSION_NAMES.include?(version_name)
28
- raise ArgumentError.new, 'invalid version'
29
- end
30
-
31
- @resolver = VersionClassResolver.new(version_name: version_name)
32
- end
33
-
34
- #
35
- # 不正か
36
- #
37
- # @return [True] 不正
38
- # @return [False] 不正なし
39
- #
40
- def invalid?
41
- @version_name.empty?
42
- end
43
- end
44
- end