zakuro 0.5.0 → 0.6.0

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -0
  3. data/lib/zakuro/calculation/base/gengou.rb +82 -0
  4. data/lib/zakuro/calculation/base/linear_gengou.rb +76 -0
  5. data/lib/zakuro/calculation/base/operated_year.rb +5 -15
  6. data/lib/zakuro/calculation/base/year.rb +26 -14
  7. data/lib/zakuro/calculation/gengou/internal/counter.rb +129 -0
  8. data/lib/zakuro/calculation/gengou/internal/reserve/interval.rb +183 -0
  9. data/lib/zakuro/calculation/gengou/internal/reserve/list.rb +382 -0
  10. data/lib/zakuro/calculation/gengou/internal/reserve.rb +42 -0
  11. data/lib/zakuro/calculation/gengou/scroll.rb +262 -0
  12. data/lib/zakuro/calculation/monthly/first_day.rb +3 -2
  13. data/lib/zakuro/calculation/monthly/month.rb +49 -2
  14. data/lib/zakuro/calculation/monthly/operated_month.rb +2 -2
  15. data/lib/zakuro/calculation/range/full_range.rb +65 -103
  16. data/lib/zakuro/calculation/range/operated_range.rb +13 -8
  17. data/lib/zakuro/calculation/range/operated_solar_terms.rb +36 -17
  18. data/lib/zakuro/calculation/range/transfer/gengou_scroller.rb +54 -0
  19. data/lib/zakuro/calculation/range/transfer/year_boundary.rb +25 -21
  20. data/lib/zakuro/calculation/specifier/single_day.rb +13 -35
  21. data/lib/zakuro/calculation/summary/single.rb +5 -2
  22. data/lib/zakuro/calculation/version/internal/crawler.rb +51 -0
  23. data/lib/zakuro/calculation/version/internal/range.rb +39 -0
  24. data/lib/zakuro/calculation/version/version.rb +24 -0
  25. data/lib/zakuro/era/japan/calendar.rb +133 -0
  26. data/lib/zakuro/era/japan/gengou/parser.rb +95 -25
  27. data/lib/zakuro/era/japan/gengou/type.rb +148 -41
  28. data/lib/zakuro/era/japan/gengou/validator.rb +157 -52
  29. data/lib/zakuro/era/japan/gengou/yaml/set-001-until-south.yaml +1870 -0
  30. data/lib/zakuro/era/japan/gengou/yaml/set-002-from-north.yaml +810 -0
  31. data/lib/zakuro/era/japan/gengou/yaml/set-003-modern.yaml +50 -0
  32. data/lib/zakuro/era/japan/gengou.rb +5 -5
  33. data/lib/zakuro/era/japan/version.rb +151 -0
  34. data/lib/zakuro/era/{western.rb → western/calendar.rb} +0 -0
  35. data/lib/zakuro/merchant.rb +12 -3
  36. data/lib/zakuro/operation/month/parser.rb +1 -1
  37. data/lib/zakuro/operation/month/type.rb +1 -1
  38. data/lib/zakuro/operation/month/validator.rb +1 -1
  39. data/lib/zakuro/output/response.rb +5 -5
  40. data/lib/zakuro/tools/typeconv.rb +38 -0
  41. data/lib/zakuro/tools/typeof.rb +4 -1
  42. data/lib/zakuro/version/context.rb +24 -3
  43. data/lib/zakuro/version/daien/daien.rb +1 -26
  44. data/lib/zakuro/version/genka/genka.rb +1 -26
  45. data/lib/zakuro/version/gihou/gihou.rb +1 -30
  46. data/lib/zakuro/version/gregorio/gregorio.rb +1 -9
  47. data/lib/zakuro/version/houryaku/houryaku.rb +1 -9
  48. data/lib/zakuro/version/joukyou/joukyou.rb +1 -9
  49. data/lib/zakuro/version/kansei/kansei.rb +1 -9
  50. data/lib/zakuro/version/senmyou/senmyou.rb +1 -30
  51. data/lib/zakuro/version/tenpou/tenpou.rb +1 -9
  52. data/zakuro.gemspec +1 -3
  53. metadata +25 -17
  54. data/lib/zakuro/calculation/base/multi_gengou.rb +0 -101
  55. data/lib/zakuro/calculation/base/multi_gengou_roller.rb +0 -218
  56. data/lib/zakuro/calculation/range/transfer/western_date_allocation.rb +0 -82
  57. data/lib/zakuro/era/japan/reki.rb +0 -91
  58. data/lib/zakuro/era/japan/yaml/set-001-until-south.yaml +0 -1121
  59. data/lib/zakuro/era/japan/yaml/set-002-from-north.yaml +0 -485
  60. data/lib/zakuro/era/japan/yaml/set-003-modern.yaml +0 -28
  61. data/lib/zakuro/version/abstract_version.rb +0 -29
  62. data/lib/zakuro/version.rb +0 -7
  63. data/lib/zakuro/version_factory.rb +0 -59
@@ -1,485 +0,0 @@
1
- id: 2
2
- name: "北朝+南北朝後"
3
- # 明治1年9月7日
4
- end_date: "1868-10-22"
5
- list:
6
- - name: "正慶"
7
- # 1年4月28日
8
- start_year: 1
9
- start_date: "1332-5-23"
10
- new_year_date: "1332-1-28"
11
- note: ""
12
- - name: "建武"
13
- # 1年1月29日
14
- start_year: 1
15
- start_date: "1334-3-5"
16
- new_year_date: "1334-2-5"
17
- note: ""
18
- - name: "暦応"
19
- # 1年8月28日
20
- start_year: 1
21
- start_date: "1338-10-11"
22
- new_year_date: "1338-1-22"
23
- note: ""
24
- - name: "康永"
25
- # 1年4月27日
26
- start_year: 1
27
- start_date: "1342-6-1"
28
- new_year_date: "1342-2-6"
29
- note: ""
30
- - name: "貞和"
31
- # 1年10月21日
32
- start_year: 1
33
- start_date: "1345-11-15"
34
- new_year_date: "1345-2-3"
35
- note: ""
36
- - name: "観応"
37
- # 1年2月27日
38
- start_year: 1
39
- start_date: "1350-4-4"
40
- new_year_date: "1350-2-8"
41
- note: ""
42
- - name: "文和"
43
- # 1年9月27日
44
- start_year: 1
45
- start_date: "1352-11-4"
46
- new_year_date: "1352-1-18"
47
- note: ""
48
- - name: "延文"
49
- # 1年3月28日
50
- start_year: 1
51
- start_date: "1356-4-29"
52
- new_year_date: "1356-2-2"
53
- note: ""
54
- - name: "康安"
55
- # 1年3月29日
56
- start_year: 1
57
- start_date: "1361-5-4"
58
- new_year_date: "1361-2-6"
59
- note: ""
60
- - name: "貞治"
61
- # 1年9月23日
62
- start_year: 1
63
- start_date: "1362-10-11"
64
- new_year_date: "1362-1-27"
65
- note: ""
66
- - name: "応安"
67
- # 1年2月18日
68
- start_year: 1
69
- start_date: "1368-3-7"
70
- new_year_date: "1368-1-21"
71
- note: ""
72
- - name: "永和"
73
- # 1年2月27日
74
- start_year: 1
75
- start_date: "1375-3-29"
76
- new_year_date: "1375-2-2"
77
- note: ""
78
- - name: "康暦"
79
- # 1年3月22日
80
- start_year: 1
81
- start_date: "1379-4-9"
82
- new_year_date: "1379-1-19"
83
- note: ""
84
- - name: "永徳"
85
- # 1年2月24日
86
- start_year: 1
87
- start_date: "1381-3-20"
88
- new_year_date: "1381-1-26"
89
- note: ""
90
- - name: "至徳"
91
- # 1年2月27日
92
- start_year: 1
93
- start_date: "1384-3-19"
94
- new_year_date: "1384-1-23"
95
- note: ""
96
- - name: "嘉慶"
97
- # 1年8月23日
98
- start_year: 1
99
- start_date: "1387-10-5"
100
- new_year_date: "1387-1-21"
101
- note: ""
102
- - name: "康応"
103
- # 1年2月9日
104
- start_year: 1
105
- start_date: "1389-3-7"
106
- new_year_date: "1389-1-28"
107
- note: ""
108
- - name: "明徳"
109
- # 1年3月26日
110
- start_year: 1
111
- start_date: "1390-4-12"
112
- new_year_date: "1390-1-17"
113
- note: ""
114
- - name: "応永"
115
- # 1年7月5日
116
- start_year: 1
117
- start_date: "1394-8-2"
118
- new_year_date: "1394-2-1"
119
- note: ""
120
- - name: "正長"
121
- # 1年4月27日
122
- start_year: 1
123
- start_date: "1428-6-10"
124
- new_year_date: "1428-1-17"
125
- note: ""
126
- - name: "永享"
127
- # 1年9月5日
128
- start_year: 1
129
- start_date: "1429-10-3"
130
- new_year_date: "1429-2-4"
131
- note: ""
132
- - name: "嘉吉"
133
- # 1年2月17日
134
- start_year: 1
135
- start_date: "1441-3-10"
136
- new_year_date: "1441-1-23"
137
- note: ""
138
- - name: "文安"
139
- # 1年2月5日
140
- start_year: 1
141
- start_date: "1444-2-23"
142
- new_year_date: "1444-1-20"
143
- note: ""
144
- - name: "宝徳"
145
- # 1年7月28日
146
- start_year: 1
147
- start_date: "1449-8-16"
148
- new_year_date: "1449-1-25"
149
- note: ""
150
- - name: "享徳"
151
- # 1年7月25日
152
- start_year: 1
153
- start_date: "1452-8-10"
154
- new_year_date: "1452-1-22"
155
- note: ""
156
- - name: "康正"
157
- # 1年7月25日
158
- start_year: 1
159
- start_date: "1455-9-6"
160
- new_year_date: "1455-1-18"
161
- note: ""
162
- - name: "長禄"
163
- # 1年9月28日
164
- start_year: 1
165
- start_date: "1457-10-16"
166
- new_year_date: "1457-1-26"
167
- note: ""
168
- - name: "寛正"
169
- # 1年12月21日
170
- start_year: 1
171
- start_date: "1461-2-1"
172
- new_year_date: "1460-1-24"
173
- note: ""
174
- - name: "文正"
175
- # 1年2月28日
176
- start_year: 1
177
- start_date: "1466-3-14"
178
- new_year_date: "1466-1-17"
179
- note: ""
180
- - name: "応仁"
181
- # 1年3月5日
182
- start_year: 1
183
- start_date: "1467-4-9"
184
- new_year_date: "1467-2-5"
185
- note: ""
186
- - name: "文明"
187
- # 1年4月28日
188
- start_year: 1
189
- start_date: "1469-6-8"
190
- new_year_date: "1469-2-12"
191
- note: ""
192
- - name: "長享"
193
- # 1年7月20日
194
- start_year: 1
195
- start_date: "1487-8-9"
196
- new_year_date: "1487-1-25"
197
- note: ""
198
- - name: "延徳"
199
- # 1年8月21日
200
- start_year: 1
201
- start_date: "1489-9-16"
202
- new_year_date: "1489-2-1"
203
- note: ""
204
- - name: "明応"
205
- # 1年7月19日
206
- start_year: 1
207
- start_date: "1492-8-12"
208
- new_year_date: "1492-1-30"
209
- note: ""
210
- - name: "文亀"
211
- # 1年2月29日
212
- start_year: 1
213
- start_date: "1501-3-18"
214
- new_year_date: "1501-1-19"
215
- note: ""
216
- - name: "永正"
217
- # 1年2月30日
218
- start_year: 1
219
- start_date: "1504-3-16"
220
- new_year_date: "1504-1-18"
221
- note: ""
222
- - name: "大永"
223
- # 1年8月23日
224
- start_year: 1
225
- start_date: "1521-9-23"
226
- new_year_date: "1521-2-8"
227
- note: ""
228
- - name: "享禄"
229
- # 1年8月20日
230
- start_year: 1
231
- start_date: "1528-9-3"
232
- new_year_date: "1528-1-22"
233
- note: ""
234
- - name: "天文"
235
- # 1年7月29日
236
- start_year: 1
237
- start_date: "1532-8-29"
238
- new_year_date: "1532-2-6"
239
- note: ""
240
- - name: "弘治"
241
- # 1年10月23日
242
- start_year: 1
243
- start_date: "1555-11-7"
244
- new_year_date: "1555-1-23"
245
- note: ""
246
- - name: "永禄"
247
- # 1年2月28日
248
- start_year: 1
249
- start_date: "1558-3-18"
250
- new_year_date: "1558-1-20"
251
- note: ""
252
- - name: "元亀"
253
- # 1年4月23日
254
- start_year: 1
255
- start_date: "1570-5-27"
256
- new_year_date: "1570-2-5"
257
- note: ""
258
- - name: "天正"
259
- # 1年7月28日
260
- start_year: 1
261
- start_date: "1573-8-25"
262
- new_year_date: "1573-2-3"
263
- note: ""
264
- - name: "文禄"
265
- # 1年12月8日
266
- start_year: 1
267
- start_date: "1593-1-10"
268
- new_year_date: "1592-2-13"
269
- note: ""
270
- - name: "慶長"
271
- # 1年10月27日
272
- start_year: 1
273
- start_date: "1596-12-16"
274
- new_year_date: "1596-1-30"
275
- note: ""
276
- - name: "元和"
277
- # 1年7月13日
278
- start_year: 1
279
- start_date: "1615-9-5"
280
- new_year_date: "1615-1-29"
281
- note: ""
282
- - name: "寛永"
283
- # 1年2月30日
284
- start_year: 1
285
- start_date: "1624-4-17"
286
- new_year_date: "1624-2-19"
287
- note: ""
288
- - name: "正保"
289
- # 1年12月16日
290
- start_year: 1
291
- start_date: "1645-1-13"
292
- new_year_date: "1644-2-8"
293
- note: ""
294
- - name: "慶安"
295
- # 1年2月15日
296
- start_year: 1
297
- start_date: "1648-4-7"
298
- new_year_date: "1648-1-25"
299
- note: ""
300
- - name: "承応"
301
- # 1年9月18日
302
- start_year: 1
303
- start_date: "1652-10-20"
304
- new_year_date: "1652-2-10"
305
- note: ""
306
- - name: "明暦"
307
- # 1年4月13日
308
- start_year: 1
309
- start_date: "1655-5-18"
310
- new_year_date: "1655-2-7"
311
- note: ""
312
- - name: "万治"
313
- # 1年7月23日
314
- start_year: 1
315
- start_date: "1658-8-21"
316
- new_year_date: "1658-2-3"
317
- note: ""
318
- - name: "寛文"
319
- # 1年4月25日
320
- start_year: 1
321
- start_date: "1661-5-23"
322
- new_year_date: "1661-1-31"
323
- note: ""
324
- - name: "延宝"
325
- # 1年9月21日
326
- start_year: 1
327
- start_date: "1673-10-30"
328
- new_year_date: "1673-2-17"
329
- note: ""
330
- - name: "天和"
331
- # 1年9月29日
332
- start_year: 1
333
- start_date: "1681-11-9"
334
- new_year_date: "1681-2-19"
335
- note: ""
336
- - name: "貞享"
337
- # 1年2月21日
338
- start_year: 1
339
- start_date: "1684-4-5"
340
- new_year_date: "1684-2-16"
341
- note: ""
342
- - name: "元禄"
343
- # 1年9月30日
344
- start_year: 1
345
- start_date: "1688-10-23"
346
- new_year_date: "1688-2-2"
347
- note: ""
348
- - name: "宝永"
349
- # 1年3月13日
350
- start_year: 1
351
- start_date: "1704-4-16"
352
- new_year_date: "1704-2-5"
353
- note: ""
354
- - name: "正徳"
355
- # 1年4月25日
356
- start_year: 1
357
- start_date: "1711-6-11"
358
- new_year_date: "1711-2-17"
359
- note: ""
360
- - name: "享保"
361
- # 1年6月22日
362
- start_year: 1
363
- start_date: "1716-8-9"
364
- new_year_date: "1716-1-25"
365
- note: ""
366
- - name: "元文"
367
- # 1年4月28日
368
- start_year: 1
369
- start_date: "1736-6-7"
370
- new_year_date: "1736-2-12"
371
- note: ""
372
- - name: "寛保"
373
- # 1年2月27日
374
- start_year: 1
375
- start_date: "1741-4-12"
376
- new_year_date: "1741-2-16"
377
- note: ""
378
- - name: "延享"
379
- # 1年2月21日
380
- start_year: 1
381
- start_date: "1744-4-3"
382
- new_year_date: "1744-2-14"
383
- note: ""
384
- - name: "寛延"
385
- # 1年7月12日
386
- start_year: 1
387
- start_date: "1748-8-5"
388
- new_year_date: "1748-1-30"
389
- note: ""
390
- - name: "宝暦"
391
- # 1年10月27日
392
- start_year: 1
393
- start_date: "1751-12-14"
394
- new_year_date: "1751-1-27"
395
- note: ""
396
- - name: "明和"
397
- # 1年6月2日
398
- start_year: 1
399
- start_date: "1764-6-30"
400
- new_year_date: "1764-2-2"
401
- note: ""
402
- - name: "安永"
403
- # 1年11月16日
404
- start_year: 1
405
- start_date: "1772-12-10"
406
- new_year_date: "1772-2-4"
407
- note: ""
408
- - name: "天明"
409
- # 1年4月2日
410
- start_year: 1
411
- start_date: "1781-4-25"
412
- new_year_date: "1781-1-24"
413
- note: ""
414
- - name: "寛政"
415
- # 1年1月25日
416
- start_year: 1
417
- start_date: "1789-2-19"
418
- new_year_date: "1789-1-26"
419
- note: ""
420
- - name: "享和"
421
- # 1年2月5日
422
- start_year: 1
423
- start_date: "1801-3-19"
424
- new_year_date: "1801-2-13"
425
- note: ""
426
- - name: "文化"
427
- # 1年2月11日
428
- start_year: 1
429
- start_date: "1804-3-22"
430
- new_year_date: "1804-2-11"
431
- note: ""
432
- - name: "文政"
433
- # 1年4月22日
434
- start_year: 1
435
- start_date: "1818-5-26"
436
- new_year_date: "1818-2-5"
437
- note: ""
438
- - name: "天保"
439
- # 1年12月10日
440
- start_year: 1
441
- start_date: "1831-1-23"
442
- new_year_date: "1830-1-25"
443
- note: ""
444
- - name: "弘化"
445
- # 1年12月2日
446
- start_year: 1
447
- start_date: "1845-1-9"
448
- new_year_date: "1844-2-18"
449
- note: ""
450
- - name: "嘉永"
451
- # 1年2月28日
452
- start_year: 1
453
- start_date: "1848-4-1"
454
- new_year_date: "1848-2-5"
455
- note: ""
456
- - name: "安政"
457
- # 1年11月27日
458
- start_year: 1
459
- start_date: "1855-1-15"
460
- new_year_date: "1854-1-29"
461
- note: ""
462
- - name: "万延"
463
- # 1年3月18日
464
- start_year: 1
465
- start_date: "1860-4-8"
466
- new_year_date: "1860-1-23"
467
- note: ""
468
- - name: "文久"
469
- # 1年2月19日
470
- start_year: 1
471
- start_date: "1861-3-29"
472
- new_year_date: "1861-2-10"
473
- note: ""
474
- - name: "元治"
475
- # 1年2月20日
476
- start_year: 1
477
- start_date: "1864-3-27"
478
- new_year_date: "1864-2-8"
479
- note: ""
480
- - name: "慶応"
481
- # 1年4月7日
482
- start_year: 1
483
- start_date: "1865-5-1"
484
- new_year_date: "1865-1-27"
485
- note: ""
@@ -1,28 +0,0 @@
1
- id: 3
2
- name: "近代(一世一元)"
3
- end_date: "9999-12-31"
4
- list:
5
- - name: "明治"
6
- # 1年9月8日
7
- start_year: 1
8
- start_date: "1868-10-23"
9
- new_year_date: "1868-1-25"
10
- note: ""
11
- - name: "大正"
12
- # 1年7月30日
13
- start_year: 1
14
- start_date: "1912-7-30"
15
- new_year_date: "1912-1-1"
16
- note: ""
17
- - name: "昭和"
18
- # 1年12月25日
19
- start_year: 1
20
- start_date: "1926-12-25"
21
- new_year_date: "1926-1-1"
22
- note: ""
23
- - name: "令和"
24
- # 1年5月1日
25
- start_year: 1
26
- start_date: "2019-5-1"
27
- new_year_date: "2019-1-1"
28
- note: ""
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # :nodoc:
4
- module Zakuro
5
- #
6
- # AbstractVersion 暦インターフェース
7
- #
8
- # @abstract 暦日を引き当てるためのインターフェース
9
- #
10
- class AbstractVersion
11
- # @return [True] 暦の使用可
12
- # @return [False] 暦の使用不可
13
- RELEASE = false
14
-
15
- #
16
- # 西暦日から和暦日に変換する
17
- #
18
- # @param [Date] western_date 西暦日
19
- #
20
- # @return [Result::Single] 和暦日
21
- #
22
- # @raise [NotImplementedError] オーバーライドなし
23
- #
24
- def self.to_japan_date(western_date:)
25
- raise NotImplementedError,
26
- "must be implemented on #{self.class}##{__method__}(#{western_date})"
27
- end
28
- end
29
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # :nodoc:
4
- module Zakuro
5
- # @return [String] library version
6
- VERSION = '0.5.0'
7
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative './era/japan/reki'
4
- require_relative './era/western'
5
- require_relative './version/genka/genka'
6
- require_relative './version/gihou/gihou'
7
- require_relative './version/daien/daien'
8
- require_relative './version/senmyou/senmyou'
9
- require_relative './version/joukyou/joukyou'
10
- require_relative './version/houryaku/houryaku'
11
- require_relative './version/kansei/kansei'
12
- require_relative './version/tenpou/tenpou'
13
- require_relative './version/gregorio/gregorio'
14
-
15
- # :nodoc:
16
- module Zakuro
17
- #
18
- # VersionFactory 暦生成
19
- #
20
- class VersionFactory
21
- # :reek:TooManyStatements { max_statements: 6 }
22
- # :reek:UncommunicativeVariableName {accept: e}
23
-
24
- #
25
- # 実行可能な暦を取得する
26
- #
27
- # @param [Date] date 西暦日
28
- #
29
- # @return [AbstractVersion] 暦クラス
30
- #
31
- def self.get_runnable_constant(date:)
32
- class_name = Japan::Reki.class_name(
33
- date: Western::Calendar.create(date: date)
34
- )
35
- constant = Object.const_get(class_name)
36
- raise ArgumentError, 'unreleased version' unless constant::RELEASE
37
-
38
- constant
39
- rescue StandardError => e
40
- raise e
41
- end
42
-
43
- # :reek:UncommunicativeVariableName {accept: e}
44
-
45
- #
46
- # 西暦日から和暦日に変換する
47
- #
48
- # @param [Date] western_date 西暦日
49
- #
50
- # @return [Result::Single] 和暦日
51
- #
52
- def self.to_japan_date(western_date:)
53
- runnable = VersionFactory.get_runnable_constant(date: western_date)
54
- runnable.to_japan_date(western_date: western_date)
55
- rescue StandardError => e
56
- raise Output::ZakuroError, e.message
57
- end
58
- end
59
- end