zakuro 0.9.4 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/README.md +41 -8
  4. data/VERSION +1 -1
  5. data/doc/gengou.md +1 -1
  6. data/doc/operation/csv/month.csv +5 -5
  7. data/doc/operation/operation.xlsx +0 -0
  8. data/images/logo-text.png +0 -0
  9. data/lib/zakuro/calculation/base/gengou.rb +2 -4
  10. data/lib/zakuro/calculation/base/year.rb +1 -1
  11. data/lib/zakuro/calculation/era/gengou/abstract_scroll.rb +2 -2
  12. data/lib/zakuro/calculation/era/gengou/internal/publisher.rb +1 -1
  13. data/lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb +4 -4
  14. data/lib/zakuro/calculation/era/gengou/internal/reserve/empty_link.rb +3 -3
  15. data/lib/zakuro/calculation/era/gengou/internal/reserve/named_list.rb +1 -1
  16. data/lib/zakuro/calculation/era/version/internal/crawler.rb +3 -3
  17. data/lib/zakuro/calculation/monthly/abstract_lunar_phase.rb +1 -1
  18. data/lib/zakuro/calculation/monthly/internal/date_comparer.rb +78 -0
  19. data/lib/zakuro/calculation/monthly/{meta → internal/meta}/all_solar_term.rb +1 -1
  20. data/lib/zakuro/calculation/monthly/{meta → internal/meta}/meta_collector.rb +2 -2
  21. data/lib/zakuro/calculation/monthly/{first_day.rb → internal/part/first_day.rb} +2 -2
  22. data/lib/zakuro/calculation/monthly/{meta.rb → internal/part/meta.rb} +1 -1
  23. data/lib/zakuro/calculation/monthly/internal/solar_term_selector.rb +203 -0
  24. data/lib/zakuro/calculation/monthly/month.rb +30 -125
  25. data/lib/zakuro/calculation/monthly/operated_month.rb +5 -2
  26. data/lib/zakuro/calculation/range/medieval_annual_range.rb +0 -2
  27. data/lib/zakuro/calculation/range/transfer/gengou_scroller.rb +24 -10
  28. data/lib/zakuro/calculation/stella/solar/abstract_average.rb +3 -3
  29. data/lib/zakuro/calculation/summary/internal/option/dropped_date.rb +102 -0
  30. data/lib/zakuro/calculation/summary/internal/option/vanished_date.rb +111 -0
  31. data/lib/zakuro/calculation/summary/internal/option.rb +4 -137
  32. data/lib/zakuro/calculation/summary/japan/range.rb +4 -5
  33. data/lib/zakuro/calculation/summary/western/single.rb +0 -2
  34. data/lib/zakuro/context/version_class_resolver.rb +5 -5
  35. data/lib/zakuro/era/japan/calendar.rb +4 -4
  36. data/lib/zakuro/era/japan/gengou/alignment/division.rb +2 -2
  37. data/lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb +2 -2
  38. data/lib/zakuro/era/japan/gengou/alignment.rb +5 -3
  39. data/lib/zakuro/era/japan/gengou/resource/parser.rb +17 -16
  40. data/lib/zakuro/era/japan/gengou/resource/validator.rb +3 -394
  41. data/lib/zakuro/era/japan/gengou/resource/yaml/set-001-until-south.yaml +2 -2
  42. data/lib/zakuro/era/japan/gengou.rb +3 -3
  43. data/lib/zakuro/era/japan/type/base/both/date.rb +51 -0
  44. data/lib/zakuro/era/japan/type/base/both/year.rb +53 -0
  45. data/lib/zakuro/era/japan/type/base/gengou.rb +177 -0
  46. data/lib/zakuro/era/japan/type/base/gengou_set.rb +78 -0
  47. data/lib/zakuro/era/japan/type/base/switch_date.rb +74 -0
  48. data/lib/zakuro/era/japan/type/base/version_range.rb +189 -0
  49. data/lib/zakuro/era/japan/type/validation/both/date.rb +99 -0
  50. data/lib/zakuro/era/japan/type/validation/both/year.rb +75 -0
  51. data/lib/zakuro/era/japan/type/validation/gengou.rb +93 -0
  52. data/lib/zakuro/era/japan/type/validation/gengou_set.rb +133 -0
  53. data/lib/zakuro/era/japan/type/validation/switch_date.rb +73 -0
  54. data/lib/zakuro/era/japan/type/validation/version_range.rb +109 -0
  55. data/lib/zakuro/era/japan/type/validation/version_root.rb +102 -0
  56. data/lib/zakuro/era/japan/version/resource/parser.rb +266 -0
  57. data/lib/zakuro/era/japan/version/resource/validator.rb +37 -0
  58. data/lib/zakuro/era/japan/version/resource/yaml/version.yaml +80 -0
  59. data/lib/zakuro/era/japan/version/resource.rb +22 -0
  60. data/lib/zakuro/era/japan/version.rb +4 -115
  61. data/lib/zakuro/era/western/calendar.rb +2 -2
  62. data/lib/zakuro/exception/zakuro_error.rb +1 -1
  63. data/lib/zakuro/merchant.rb +5 -5
  64. data/lib/zakuro/operation/month/parser.rb +2 -2
  65. data/lib/zakuro/operation/yaml/month.yaml +5 -5
  66. data/lib/zakuro/output/logger.rb +4 -4
  67. data/lib/zakuro/parameter/catalog/basis_date.rb +55 -0
  68. data/lib/zakuro/parameter/catalog/column.rb +57 -0
  69. data/lib/zakuro/parameter/catalog/option.rb +60 -0
  70. data/lib/zakuro/parameter/catalog/range.rb +81 -0
  71. data/lib/zakuro/parameter/condition.rb +108 -0
  72. data/lib/zakuro/result/core.rb +2 -2
  73. data/lib/zakuro/{tools → tool}/remainder_comparer.rb +2 -4
  74. data/lib/zakuro/{tools → tool}/stringifier.rb +3 -3
  75. data/lib/zakuro/{tools → tool}/typeconv.rb +2 -2
  76. data/lib/zakuro/{tools → tool}/typeof.rb +2 -2
  77. data/lib/zakuro/version/daien/const/number.rb +42 -39
  78. data/lib/zakuro/version/daien/const/remainder.rb +38 -35
  79. data/lib/zakuro/version/daien/cycle/remainder.rb +77 -74
  80. data/lib/zakuro/version/daien/cycle/solar_term.rb +18 -15
  81. data/lib/zakuro/version/daien/daien.rb +8 -5
  82. data/lib/zakuro/version/daien/monthly/lunar_phase.rb +67 -64
  83. data/lib/zakuro/version/daien/option/dropped_date/parameter.rb +15 -12
  84. data/lib/zakuro/version/daien/option/vanished_date/parameter.rb +15 -12
  85. data/lib/zakuro/version/daien/range/annual_range.rb +27 -24
  86. data/lib/zakuro/version/daien/stella/lunar/adjustment.rb +209 -206
  87. data/lib/zakuro/version/daien/stella/lunar/localization.rb +32 -29
  88. data/lib/zakuro/version/daien/stella/lunar/location.rb +53 -50
  89. data/lib/zakuro/version/daien/stella/lunar/value.rb +65 -62
  90. data/lib/zakuro/version/daien/stella/origin/average_november.rb +23 -20
  91. data/lib/zakuro/version/daien/stella/origin/lunar_age.rb +42 -39
  92. data/lib/zakuro/version/daien/stella/origin/winter_solstice.rb +44 -41
  93. data/lib/zakuro/version/daien/stella/solar/adjustment.rb +74 -71
  94. data/lib/zakuro/version/daien/stella/solar/average.rb +68 -65
  95. data/lib/zakuro/version/daien/stella/solar/interval.rb +95 -92
  96. data/lib/zakuro/version/daien/stella/solar/location.rb +41 -38
  97. data/lib/zakuro/version/daien/stella/solar/value.rb +21 -18
  98. data/lib/zakuro/version/genka/const/number.rb +31 -28
  99. data/lib/zakuro/version/genka/const/remainder.rb +20 -17
  100. data/lib/zakuro/version/genka/cycle/remainder.rb +72 -69
  101. data/lib/zakuro/version/genka/cycle/solar_term.rb +18 -15
  102. data/lib/zakuro/version/genka/genka.rb +8 -5
  103. data/lib/zakuro/version/genka/monthly/lunar_phase.rb +82 -79
  104. data/lib/zakuro/version/genka/option/dropped_date/parameter.rb +13 -10
  105. data/lib/zakuro/version/genka/option/vanished_date/parameter.rb +13 -10
  106. data/lib/zakuro/version/genka/range/annual_range.rb +57 -54
  107. data/lib/zakuro/version/genka/stella/origin/first_term.rb +44 -41
  108. data/lib/zakuro/version/genka/stella/origin/january.rb +38 -35
  109. data/lib/zakuro/version/genka/stella/solar/average.rb +24 -21
  110. data/lib/zakuro/version/gihou/const/number.rb +40 -37
  111. data/lib/zakuro/version/gihou/const/remainder.rb +32 -29
  112. data/lib/zakuro/version/gihou/cycle/remainder.rb +38 -35
  113. data/lib/zakuro/version/gihou/cycle/solar_term.rb +18 -15
  114. data/lib/zakuro/version/gihou/gihou.rb +8 -5
  115. data/lib/zakuro/version/gihou/monthly/lunar_phase.rb +68 -65
  116. data/lib/zakuro/version/gihou/option/dropped_date/parameter.rb +13 -10
  117. data/lib/zakuro/version/gihou/option/vanished_date/parameter.rb +13 -10
  118. data/lib/zakuro/version/gihou/range/annual_range.rb +27 -24
  119. data/lib/zakuro/version/gihou/stella/lunar/adjustment.rb +212 -209
  120. data/lib/zakuro/version/gihou/stella/lunar/localization.rb +32 -29
  121. data/lib/zakuro/version/gihou/stella/lunar/location.rb +53 -50
  122. data/lib/zakuro/version/gihou/stella/lunar/value.rb +65 -62
  123. data/lib/zakuro/version/gihou/stella/origin/average_november.rb +23 -20
  124. data/lib/zakuro/version/gihou/stella/origin/lunar_age.rb +42 -39
  125. data/lib/zakuro/version/gihou/stella/origin/winter_solstice.rb +44 -41
  126. data/lib/zakuro/version/gihou/stella/solar/adjustment.rb +74 -71
  127. data/lib/zakuro/version/gihou/stella/solar/average.rb +67 -64
  128. data/lib/zakuro/version/gihou/stella/solar/interval.rb +95 -92
  129. data/lib/zakuro/version/gihou/stella/solar/location.rb +41 -38
  130. data/lib/zakuro/version/gihou/stella/solar/value.rb +21 -18
  131. data/lib/zakuro/version/gregorio/gregorio.rb +8 -5
  132. data/lib/zakuro/version/houryaku/houryaku.rb +8 -5
  133. data/lib/zakuro/version/joukyou/joukyou.rb +8 -5
  134. data/lib/zakuro/version/kansei/kansei.rb +8 -5
  135. data/lib/zakuro/version/senmyou/const/number.rb +40 -37
  136. data/lib/zakuro/version/senmyou/const/remainder.rb +35 -32
  137. data/lib/zakuro/version/senmyou/cycle/remainder.rb +74 -71
  138. data/lib/zakuro/version/senmyou/cycle/solar_term.rb +18 -15
  139. data/lib/zakuro/version/senmyou/monthly/lunar_phase.rb +69 -66
  140. data/lib/zakuro/version/senmyou/option/dropped_date/parameter.rb +15 -12
  141. data/lib/zakuro/version/senmyou/option/vanished_date/parameter.rb +15 -12
  142. data/lib/zakuro/version/senmyou/range/annual_range.rb +27 -24
  143. data/lib/zakuro/version/senmyou/senmyou.rb +8 -5
  144. data/lib/zakuro/version/senmyou/stella/lunar/adjustment.rb +206 -203
  145. data/lib/zakuro/version/senmyou/stella/lunar/localization.rb +32 -29
  146. data/lib/zakuro/version/senmyou/stella/lunar/location.rb +60 -57
  147. data/lib/zakuro/version/senmyou/stella/lunar/value.rb +66 -63
  148. data/lib/zakuro/version/senmyou/stella/origin/average_november.rb +23 -20
  149. data/lib/zakuro/version/senmyou/stella/origin/lunar_age.rb +42 -39
  150. data/lib/zakuro/version/senmyou/stella/origin/winter_solstice.rb +44 -41
  151. data/lib/zakuro/version/senmyou/stella/solar/adjustment.rb +74 -71
  152. data/lib/zakuro/version/senmyou/stella/solar/average.rb +67 -64
  153. data/lib/zakuro/version/senmyou/stella/solar/interval.rb +93 -90
  154. data/lib/zakuro/version/senmyou/stella/solar/location.rb +41 -38
  155. data/lib/zakuro/version/senmyou/stella/solar/value.rb +23 -20
  156. data/lib/zakuro/version/tenpou/tenpou.rb +8 -5
  157. metadata +44 -20
  158. data/lib/zakuro/condition.rb +0 -306
  159. data/lib/zakuro/era/japan/gengou/resource/type.rb +0 -356
  160. data/lib/zakuro/tools/gengou_range_comparer.rb +0 -82
  161. /data/lib/zakuro/calculation/monthly/{operated_solar_term.rb → internal/operated_solar_term.rb} +0 -0
  162. /data/lib/zakuro/calculation/monthly/{const.rb → internal/part/const.rb} +0 -0
  163. /data/lib/zakuro/calculation/monthly/{month_label.rb → internal/part/month_label.rb} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fffb0d3903b07bc1c5b884bb73bef8a11ff65f5cfdb4c7d2a58df1c2777da633
4
- data.tar.gz: c4a5ede6b55e073ac1b82b11c4b19a56a7ae7a518391bcde2c86a94461c61928
3
+ metadata.gz: 9dff0990ea44fc948599f2db2f6f4492caff773c328daabc39331716a31a43d2
4
+ data.tar.gz: 41a7b9296620670afec817686125f54bed22ee9f0410b544976fd819db7f0dd4
5
5
  SHA512:
6
- metadata.gz: d2084bedda00006b2724616daaa6088e9034dd6e878d0ef145801a5da1ffd6e22af953ea812b24efcc996593a3ec0e7c49c368b8105f2a9b5d44efe9a91ff573
7
- data.tar.gz: b960ab267ecb7667817c780b86b01ec4aac15a0d9f6ebde3a64c01cfd94d0343a9a37550ad9f98ea55a566102bcd426971e0d7ae1864a0a4af807a9414d4a8fd
6
+ metadata.gz: fe25f45f51c09f32fa1030defd7f05e5fa7ef0dd154b89840891f2d3c10c0736a13d9e327288c39f61d8a32dc3a248cb67a50c2e29b7c94cd8b3f22bc7389be9
7
+ data.tar.gz: 1251d5ac296435da1fcdc17db8493188432141b17c4dc21cea8cde0436f4597bd610b97ccbcbd225fd6d1a522ff106e70d643e11ac4211e42969a56cf91dd59a
data/Gemfile CHANGED
@@ -13,8 +13,8 @@ end
13
13
 
14
14
  group :development do
15
15
  gem 'debase'
16
- gem 'reek'
17
- gem 'rubocop-performance'
16
+ gem 'reek', '6.1.4'
17
+ gem 'rubocop', '1.52.1'
18
18
  gem 'ruby-debug-ide'
19
19
  gem 'solargraph'
20
20
  gem 'yard'
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ ![logo](images/logo-text.png)
2
+
1
3
  # Zakuro - 石榴
2
4
  zakuro は日本の暦を扱う暦算ライブラリです。
3
5
 
@@ -10,15 +12,43 @@ zakuro は日本の暦を扱う暦算ライブラリです。
10
12
 
11
13
  石榴はただ伝来しただけでなく、日本の地に根づいております。これを日本の暦になぞらえ、和名の「ざくろ」を冠することと致します。
12
14
 
13
- ## 導入
15
+ # 有用性
16
+
17
+ 下記3資料を用いた和暦日(没日・滅日あり)の特定を一度の検索で可能とします。
18
+
19
+ 1. 『日本暦日原典〔第四版〕』
20
+ 2. 『日本暦日便覧』第四章 没日と滅日
21
+ 3. 『日本史年表 第5版』
22
+
23
+ 上記資料を用いる場合は、西暦年月日から1、2の該当のページを引き当てます。
24
+
25
+ ただし、元号年表記のため、正確な元号は3の元号年月日を参照する必要があります。
26
+
27
+ 本ライブラリはこの手順をスキップし、直接、暦算値つきの和暦日を結果とします。
28
+
29
+ さらに、和暦日からの西暦日検索も併せて可能とします。
14
30
 
15
- ### Ruby
31
+ [日本の暦日データベース](https://eco.mtk.nao.ac.jp/cgi-bin/koyomi/caldb.cgi) に近しい機能を持ちますが、
16
32
 
17
- 次の範囲で動作確認しております。
33
+ 暦算値や没日・滅日を併せて結果出力する点が異なります。
18
34
 
19
- `2.6.x - 3.0.x`
35
+ # 導入
20
36
 
21
- ### Gem
37
+ ## Ruby
38
+
39
+ Rubyの推奨バージョンは次の範囲とします。
40
+
41
+ `2.6.x - 3.3.x`
42
+
43
+ 当ライブラリのバージョンが `1.0.0` の時点では、下記バージョンで動作確認を実施しております。
44
+ * 2.6.3
45
+ * 2.7.6
46
+ * 3.0.6
47
+ * 3.1.4
48
+ * 3.2.2
49
+ * 3.3.0-preview1
50
+
51
+ ## Gem
22
52
 
23
53
  [rubygem](https://rubygems.org/gems/zakuro) に登録しております。
24
54
 
@@ -40,7 +70,7 @@ Or install it yourself as:
40
70
 
41
71
  1日検索/期間検索に対応しております。
42
72
 
43
- 下記表で暦算ありの暦は使用可能です。
73
+ バージョンが `1.0.0` の時点では、下記表で暦算ありの暦が使用可能です。
44
74
 
45
75
  |開始日|暦 |計算方法|暦算|没日|滅日|
46
76
  |:----|:----|:----|:---|:---|:---|
@@ -62,8 +92,6 @@ Or install it yourself as:
62
92
 
63
93
  現在は「長慶宣明暦算法」の計算手順Aのみ対応しております。
64
94
 
65
- 「没日」「滅日」は計算できますが、正誤を確認中です。
66
-
67
95
  # 使用方法
68
96
 
69
97
  [使用方法](./doc/usage.md) を参照してください。
@@ -122,6 +150,11 @@ Or install it yourself as:
122
150
 
123
151
  https://github.com/pldb/zakuro
124
152
 
153
+ ## ロゴ・バナー
154
+
155
+ * 制作: [migut.t](https://www.instagram.com/migut.t/#)
156
+ * 調整: [pldb](https://github.com/pldb)
157
+
125
158
 
126
159
  ## ライセンス
127
160
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.4
1
+ 1.0.0
data/doc/gengou.md CHANGED
@@ -106,7 +106,7 @@
106
106
  |治安|1|1021-2-15|1年2月2日|1021-3-17|1021-3-17| |
107
107
  |万寿|1|1024-2-13|1年7月13日|1024-8-19|1024-8-19| |
108
108
  |長元|1|1028-1-30|1年7月25日|1028-8-18|1028-8-18| |
109
- |長暦|1|1037-1-19|1年4月21日|1037-5-9|1037-5-9| |
109
+ |長暦|1|1037-1-19|1年4月21日|1037-5-9|1037-5-9|行親記(計算:1037-5-8)|
110
110
  |長久|1|1040-2-15|1年11月10日|1040-12-16|1040-12-16| |
111
111
  |寛徳|1|1044-2-2|1年11月24日|1044-12-16|1044-12-16| |
112
112
  |永承|1|1046-2-9|1年4月14日|1046-5-22|1046-5-22| |
@@ -199,7 +199,7 @@
199
199
  ,139-3-1,-,-,139,3,823-11-6,弘仁 14年 10 大 壬午 17-2819,"計算は17辛巳であるが大嘗会御禊日例, 皇年代略記等により壬午朔, ユリウス暦日は11月7日。",-,true,朔日相違,-,-,大,小,-,-,-,-,-,-,辛巳,壬午,823-11-6,823-11-7,17,18,1,1,-,-,-
200
200
  ,140-1-1,-,-,140,1,824-3-4,天長 1年 2 大 庚辰 16-2957,-,改変なし(内容転記せず),false,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
201
201
  ,140-2-1,-,-,140,2,825-5-21,天長 2年 5 大 癸卯 39-2877,-,改変なし(内容転記せず),false,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
202
- ,140-3-a,-,140-3-1,140,-,825-1-12,天長 2年 12 大 己亥 35-1289,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
202
+ ,140-3-a,-,140-3-1,140,-,826-1-12,天長 2年 12 大 己亥 35-1289,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
203
203
  ,140-3-1,-,-,140,3,826-2-11,天長 3年 1 大 戊辰 5-250,紀略に正月戊辰朔と計算より1日退いている。したがってそのユリウス暦日は2月10日となる。,-,true,朔日相違,-,-,小,大,-,-,-,-,-,-,己巳,戊辰,826-2-11,826-2-10,5,4,-1,-1,-,-,-
204
204
  ,140-4-1,-,-,140,4,826-11-3,天長 3年 10 大 甲午 30-2847,-,改変なし(内容転記せず),false,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
205
205
  ,141-1-1,-,-,141,1,827-3-1,天長 4年 2 大 壬辰 28-2846,-,改変なし(内容転記せず),false,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
@@ -238,7 +238,7 @@
238
238
  ,146-3-1,-,-,146,3,844-6-19,承和 11年 6 小 癸丑 48-2934,計算は48壬子,続後紀は癸丑朔,したがって6月朔日のユリウス暦日は6月20日。,-,true,朔日相違,-,-,大,小,-,-,-,-,-,-,壬子,癸丑,844-6-19,844-6-20,48,49,1,1,-,-,-
239
239
  ,146-4-a,-,146-4-1,146,-,844-9-16,承和 11年 8 大 辛巳 17-1383,-,-,true,次月大小,-,-,小,大,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
240
240
  ,146-4-1,-,-,146,4,844-10-15,承和 11年 9 小 辛亥 46-2695,計算は46庚戌,続後紀は辛亥朔,したがって9月朔日のユリウス暦日は10月16日。,-,true,朔日相違,-,-,大,小,-,-,-,-,-,-,庚戌,辛亥,844-10-15,844-10-16,46,47,1,1,-,-,-
241
- ,147-1-a,-,147-1-1,147,-,645-10-5,承和 12年 9 大 乙巳 41-1264,-,-,true,次月大小,-,-,小,大,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
241
+ ,147-1-a,-,147-1-1,147,-,845-10-5,承和 12年 9 大 乙巳 41-1264,-,-,true,次月大小,-,-,小,大,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
242
242
  ,147-1-1,-,-,147,1,845-11-3,承和 12年 10 小 乙亥 10-2799,計算は10甲戌,続後紀は乙亥朔,したがって10月朔日のユリウス暦日は11月4日。,-,true,朔日相違,-,-,大,小,-,-,-,-,-,-,甲戌,乙亥,845-11-3,845-11-4,10,11,1,1,-,-,-
243
243
  ,147-2-a,-,147-2-1,147,-,845-12-3,承和 12年 11 大 甲辰 40-1261,-,-,true,次月大小,-,-,小,大,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
244
244
  ,147-2-1,-,-,147,2,846-1-1,承和 12年 12 小 甲戌 9-2726,計算は9癸酉,続後紀は甲戌朔,したがって12月朔日のユリウス暦日は1月2日。,-,true,朔日相違,-,-,大,小,-,-,-,-,-,-,癸酉,甲戌,846-1-1,846-1-2,9,10,1,1,-,-,-
@@ -361,11 +361,11 @@
361
361
  ,226-1-a,-,226-1-1,226,-,1082-5-1,永保 2年 4 大 壬子 48-1071,-,-,true,次月大小,-,-,小,大,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
362
362
  ,226-1-1,-,-,226,1,1082-5-30,永保 2年 5 小 壬午 17-5669,"計算と扶桑略記は辛巳, 為房卿記により壬午とする方がよいと思われる。5月壬午朔とすればユリウス暦日は5月31日となる。",-,true,朔日相違,-,-,大,小,-,-,-,-,-,-,辛巳,壬午,1082-5-30,1082-5-31,17,18,1,1,-,-,-
363
363
  ,228-1-a,-,228-1-1,228,-,1089-1-15,寛治 2年 12 小 癸卯 39-320,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
364
- ,228-1-1,-,-,228,1,1089-2-14,寛治 3年 1 大 壬申 9-6402,"計算では9癸酉であるが, 四大を避けるため壬申朔となった。正月壬申朔のユリウス暦日は2月13日。(大日本史料第3編の1; 中右記・扶桑略記・後二条師通記)。",-,true,四大回避,-,-,大,大,-,-,-,-,-,-,癸酉,壬申,1089-2-14,1089-2-13,9,8,-1,-1,-,-,-
364
+ ,228-1-1,-,-,228,1,1089-2-14,寛治 3年 1 大 壬申 9-6402,"計算では9癸酉であるが, 四大を避けるため壬申朔となった。正月壬申朔のユリウス暦日は2月13日。(大日本史料第3編の1; 中右記・扶桑略記・後二条師通記)。",-,true,四大回避,-,-,小,大,-,-,-,-,-,-,癸酉,壬申,1089-2-14,1089-2-13,9,8,-1,-1,-,-,-
365
365
  ,230-1-a,-,230-1-1,230,-,1095-1-9,嘉保 1年 12 小 戊辰 4-3361,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
366
366
  ,230-1-1,-,-,230,1,1095-2-8,嘉保 2年 1 大 丁酉 34-7200,"計算では34戊戌であるが, 中右記により丁酉朔, 正月丁酉朔のユリウス暦日は2月7日。これは嘉保元年の年間日数が385日になるのを避けるための変更である。",-,true,年日数,-,-,小,大,-,-,-,-,-,-,戊戌,丁酉,1095-2-8,1095-2-7,34,33,-1,-1,-,-,-
367
367
  ,242-1-a,-,242-1-1,242,-,1129-8-17,大治 4年 閏7 小 丁未 43-1179,-,-,true,次月大小,8月,閏7月,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
368
- ,242-1-1,-,-,242,1,1129-9-16,大治 4年 8 大 丙子 13-6547,"計算は13丁丑であるが中右記により丙子, 8月丙子朔のユリウス暦日は9月15日となる。これは皇和通暦で中根元圭が「章首の後, 閏法もし8月を得ればまた必ず大小を消息してこれを7月に退く」と書いてあるように, このあとも何回かこの理由で干支が変更され, 閏が8月から7月に移された。これを退閏という。",-,true,退閏,閏8月,8月,大,大,-,-,-,-,-,-,丁丑,丙子,1129-9-16,1129-9-15,13,12,-1,-1,-,-,-
368
+ ,242-1-1,-,-,242,1,1129-9-16,大治 4年 8 大 丙子 13-6547,"計算は13丁丑であるが中右記により丙子, 8月丙子朔のユリウス暦日は9月15日となる。これは皇和通暦で中根元圭が「章首の後, 閏法もし8月を得ればまた必ず大小を消息してこれを7月に退く」と書いてあるように, このあとも何回かこの理由で干支が変更され, 閏が8月から7月に移された。これを退閏という。",-,true,退閏,閏8月,8月,小,大,-,-,-,-,-,-,丁丑,丙子,1129-9-16,1129-9-15,13,12,-1,-1,-,-,-
369
369
  ,245-1-a,-,245-1-1,245,-,1138-1-13,保延 3年 12 小 戊午 54-2825,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
370
370
  ,245-1-1,-,-,245,1,1138-2-12,保延 4年 1 大 丁亥 24-6432,"計算では24戊子であるが中右記により丁亥, 正月丁亥朔のユリウス暦日は2月11日となる。保延3年の年間日数の385日になるのを避けるためである。",-,true,年日数,-,-,小,大,-,-,-,-,-,-,戊子,丁亥,1138-2-12,1138-2-11,24,23,-1,-1,-,-,-
371
371
  ,251-1-a,-,251-1-1,251,-,1156-11-15,保元 1年 10 小 己亥 35-1816,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
@@ -389,7 +389,7 @@
389
389
  ,272-1-a,-,272-1-1,272,-,1221-11-16,承久 3年 閏10 小 辛巳 17-1577,-,-,true,次月大小,11月,閏10月,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
390
390
  ,272-1-1,-,-,272,1,1221-12-16,承久 3年 11 大 庚戌 47-8177,"計算では47辛亥, 朔旦冬至にするため庚戌朔, そのユリウス暦日は12月15日になる。",-,true,朔旦冬至,閏11月,11月,大,大,-,-,-,-,-,-,辛亥,庚戌,1221-12-16,1221-12-15,47,46,-1,-1,-,-,-
391
391
  ,272-2-1,-,-,272,2,1222-1-15,承久 3年 12 大 庚辰 17-6684,"計算では17辛巳, 1)の変更のためここは庚辰にしないと11月が31日になってしまう。したがって12月朔のユリウス暦日は1月14日となる。(大日本史料第5編の1; 承久3年, 4年日次記, 吾妻鏡)",-,true,朔旦冬至,-,-,小,大,-,-,-,-,-,-,辛巳,庚辰,1222-1-15,1222-1-14,17,16,-1,-1,-,-,-
392
- ,275-1-a,-,275-1-1,275,-,1228-1-8,安貞 1年 12 小 丙午 42-2281,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
392
+ ,275-1-a,-,275-1-1,275,-,1228-1-9,安貞 1年 12 小 丙午 42-2281,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
393
393
  ,275-1-1,-,-,275,1,1228-2-8,安貞 2年 1 大 乙亥 12-6333,"計算では12丙子, 大日本史料第5編の1, 玉蘂ほか, 吾妻鏡などにより乙亥, 正月乙亥朔のユリウス暦日は2月7日となる。安貞元年の年間日数が385日になるのを避けるため。",-,true,年日数,-,-,小,大,-,-,-,-,-,-,丙子,乙亥,1228-2-8,1228-2-7,12,11,-1,-1,-,-,-
394
394
  ,280-1-a,-,280-1-1,280,-,1243-8-17,寛元 1年 閏7 小 乙巳 41-3888,-,-,true,次月大小,8月,閏7月,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
395
395
  ,280-1-1,-,-,280,1,1243-9-16,寛元 1年 8 大 甲戌 11-8386,"計算では11乙亥, 妙光寺内府除目部類・吾妻鏡など(大日本史料第5編の16)により甲戌, 8月甲戌朔のユリウス暦日は9月15日。章首の後の閏8月を避けるためである。大治4(1129)年の注参照。",-,true,閏8月回避,閏8月,8月,小,大,-,-,-,-,-,-,乙亥,甲戌,1243-9-16,1243-9-15,11,10,-1,-1,-,-,-
Binary file
Binary file
@@ -78,9 +78,7 @@ module Zakuro
78
78
  result = match_first_line_by_name(name: name)
79
79
  return result unless result.invalid?
80
80
 
81
- result = match_second_line_by_name(name: name)
82
-
83
- result
81
+ match_second_line_by_name(name: name)
84
82
  end
85
83
 
86
84
  #
@@ -120,7 +118,7 @@ module Zakuro
120
118
  # @return [False] 不正なし
121
119
  #
122
120
  def invalid?
123
- first_line.size.zero? && second_line.size.zero?
121
+ first_line.empty? && second_line.empty?
124
122
  end
125
123
  end
126
124
  end
@@ -70,7 +70,7 @@ module Zakuro
70
70
  def new_year_date
71
71
  return Western::Calendar.new unless months
72
72
 
73
- return Western::Calendar.new if months.size.zero?
73
+ return Western::Calendar.new if months.empty?
74
74
 
75
75
  months[0].western_date
76
76
  end
@@ -179,9 +179,9 @@ module Zakuro
179
179
  # @return [Array<Counter>] 差し替え結果
180
180
  #
181
181
  def replace_gengou(source: [], destination: [])
182
- return destination if destination.size.zero?
182
+ return destination if destination.empty?
183
183
 
184
- return destination if source.size.zero?
184
+ return destination if source.empty?
185
185
 
186
186
  last = source[-1]
187
187
  destination[0] = last if destination[0].name == last.name
@@ -54,7 +54,7 @@ module Zakuro
54
54
  # @return [Array<Base::LinearGengou>] 元号リスト
55
55
  #
56
56
  def to_linear_gengou(start_date:, last_date:, gengou_list: [])
57
- return [] if gengou_list.size.zero?
57
+ return [] if gengou_list.empty?
58
58
 
59
59
  result = []
60
60
 
@@ -160,7 +160,7 @@ module Zakuro
160
160
  def western_last_year
161
161
  return INVALID_YEAR if invalid?
162
162
 
163
- return INVALID_YEAR if list.size.zero?
163
+ return INVALID_YEAR if list.empty?
164
164
 
165
165
  list[-1].gengou.last_year
166
166
  end
@@ -174,7 +174,7 @@ module Zakuro
174
174
  def invalid?
175
175
  return true unless list
176
176
 
177
- return true if list.size.zero?
177
+ return true if list.empty?
178
178
 
179
179
  false
180
180
  end
@@ -185,7 +185,7 @@ module Zakuro
185
185
  # @return [Western::Calendar]設定された元号の開始日
186
186
  #
187
187
  def native_start_date
188
- return Western::Calendar.new if list.size.zero?
188
+ return Western::Calendar.new if list.empty?
189
189
 
190
190
  list[0].native_start_date
191
191
  end
@@ -197,7 +197,7 @@ module Zakuro
197
197
  # @return [False] 同一
198
198
  #
199
199
  def change_start_date?
200
- return false if list.size.zero?
200
+ return false if list.empty?
201
201
 
202
202
  list[0].change_start_date?
203
203
  end
@@ -33,7 +33,7 @@ module Zakuro
33
33
  #
34
34
  def fill(counters:, start_date: Western::Calendar.new,
35
35
  last_date: Western::Calendar.new)
36
- if counters.size.zero?
36
+ if counters.empty?
37
37
  counters.push(
38
38
  create_empty_counter(
39
39
  start_date: start_date.clone,
@@ -104,7 +104,7 @@ module Zakuro
104
104
  # @param [Array<Gengou::Counter>] counters 加算元号リスト
105
105
  #
106
106
  def fill_middle(counters:)
107
- return if counters.size.zero?
107
+ return if counters.empty?
108
108
 
109
109
  size = counters.size - 1
110
110
  (0..size).reverse_each do |index|
@@ -144,7 +144,7 @@ module Zakuro
144
144
  #
145
145
  def create_empty_counter(start_date:, last_date:)
146
146
  Gengou::Counter.new(
147
- gengou: Japan::Gengou::Resource::Gengou.new,
147
+ gengou: Japan::Type::Base::Gengou.new,
148
148
  start_date: start_date, last_date: last_date
149
149
  )
150
150
  end
@@ -60,7 +60,7 @@ module Zakuro
60
60
  [start, last].each do |name|
61
61
  gengou_list = line_by_name(name: name)
62
62
 
63
- next if gengou_list.size.zero?
63
+ next if gengou_list.empty?
64
64
 
65
65
  choise_start_date(
66
66
  date: gengou_list[0].start_date.clone
@@ -50,14 +50,14 @@ module Zakuro
50
50
  # @return [Range] 範囲
51
51
  #
52
52
  def narrow(range:, start_year:, last_year:)
53
- range_start_year = range.start_year
54
- range_start_year = start_year if start_year > range.start_year
53
+ range_start_year = range.start_year.western
54
+ range_start_year = start_year if start_year > range.start_year.western
55
55
 
56
56
  range_last_year = range.last_year
57
57
  range_last_year = last_year if last_year < range.last_year
58
58
 
59
59
  Range.new(
60
- name: range.name, start_date: range.start_date.clone,
60
+ name: range.name, start_date: range.start_date.western.clone,
61
61
  start_year: range_start_year, last_year: range_last_year
62
62
  )
63
63
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require_relative '../../output/logger'
4
4
 
5
- require_relative './const'
5
+ require_relative './internal/part/const'
6
6
 
7
7
  # :nodoc:
8
8
  module Zakuro
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Zakuro
5
+ # :nodoc:
6
+ module Calculation
7
+ # :nodoc:
8
+ module Monthly
9
+ #
10
+ # DateComparer 日付比較
11
+ #
12
+ module DateComparer
13
+ class << self
14
+ #
15
+ # 範囲内か
16
+ #
17
+ # @param [Western::Calendar] date 日付
18
+ # @param [Western::Calendar] start_date 開始日
19
+ # @param [Western::Calendar] last_date 終了日
20
+ #
21
+ # @return [True] 範囲内
22
+ # @return [False] 範囲外
23
+ #
24
+ def include?(date:, start_date:, last_date:)
25
+ return false if start_date.invalid?
26
+
27
+ return false if date < start_date
28
+
29
+ return false if date > last_date
30
+
31
+ true
32
+ end
33
+
34
+ #
35
+ # 範囲内か
36
+ #
37
+ # @param [Japan::Calendar] date 日付
38
+ # @param [Base::Gengou] gengou 元号
39
+ # @param [MonthLabel] month_label 月表示名
40
+ #
41
+ # @return [True] 範囲内
42
+ # @return [False] 範囲外
43
+ #
44
+ def include_by_japan_date?(date:, gengou:, month_label:)
45
+ linear_gengou = gengou.match_by_name(name: date.gengou)
46
+
47
+ return false if linear_gengou.invalid?
48
+
49
+ return false unless linear_gengou.name == date.gengou
50
+
51
+ return false unless linear_gengou.year == date.year
52
+
53
+ same_by_japan_date?(month_label: month_label, date: date)
54
+ end
55
+
56
+ private
57
+
58
+ #
59
+ # 同一の月情報かを検証する
60
+ #
61
+ # @param [MonthLabel] month_label 月表示名
62
+ # @param [Japan::Calendar] date 日付
63
+ #
64
+ # @return [True] 同一の月
65
+ # @return [False] 異なる月
66
+ #
67
+ def same_by_japan_date?(month_label:, date: Japan::Calendar.new)
68
+ return false unless month_label.number == date.month
69
+
70
+ return false unless month_label.leaped == date.leaped
71
+
72
+ true
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -48,7 +48,7 @@ module Zakuro
48
48
 
49
49
  first = all_solar_terms[0].clone
50
50
 
51
- return all_solar_terms if before_solar_terms.size.zero?
51
+ return all_solar_terms if before_solar_terms.empty?
52
52
 
53
53
  # 最初の二十四節気が月初日と同日であれば何もしない
54
54
  return all_solar_terms if first.remainder.day == remainder.day
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../../../era/western/calendar'
3
+ require_relative '../../../../era/western/calendar'
4
4
 
5
- require_relative '../month'
5
+ require_relative '../../month'
6
6
 
7
7
  require_relative './all_solar_term'
8
8
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../../era/western/calendar'
3
+ require_relative '../../../../era/western/calendar'
4
4
 
5
- require_relative '../cycle/abstract_remainder'
5
+ require_relative '../../../cycle/abstract_remainder'
6
6
 
7
7
  # :nodoc:
8
8
  module Zakuro
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../cycle/abstract_remainder'
3
+ require_relative '../../../cycle/abstract_remainder'
4
4
 
5
5
  # :nodoc:
6
6
  module Zakuro
@@ -0,0 +1,203 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../cycle/abstract_solar_term'
4
+
5
+ # :nodoc:
6
+ module Zakuro
7
+ # :nodoc:
8
+ module Calculation
9
+ # :nodoc:
10
+ module Monthly
11
+ #
12
+ # SolarTermSelector 二十四節気検索
13
+ #
14
+ class SolarTermSelector
15
+ # @return [Integer] 月最後の二十四節気を検索する大余の範囲上限
16
+ LAST_DAY_LIMIT = 20
17
+
18
+ # @return [Context::Context] 暦コンテキスト
19
+ attr_reader :context
20
+ # @return [Array<Cyle::AbstractSolarTerm>] 二十四節気
21
+ attr_reader :solar_terms
22
+
23
+ #
24
+ # 初期化
25
+ #
26
+ # @param [Context::Context] context 暦コンテキスト
27
+ # @param [Array<Cyle::AbstractSolarTerm>] solar_terms 二十四節気
28
+ #
29
+ def initialize(context: Context::Context.new, solar_terms: [])
30
+ @context = context
31
+ @solar_terms = solar_terms
32
+ end
33
+
34
+ #
35
+ # 二十四節気が未設定かどうかを検証する
36
+ #
37
+ # @return [True] 設定なし
38
+ # @return [False] 設定あり
39
+ #
40
+ def empty?
41
+ solar_terms.empty?
42
+ end
43
+
44
+ #
45
+ # 中気を返す
46
+ #
47
+ # @return [Cycle::AbstractSolarTerm] 中気
48
+ #
49
+ def even_term
50
+ solar_terms.each do |term|
51
+ return term if term.index.even?
52
+ end
53
+
54
+ context.resolver.solar_term.new
55
+ end
56
+
57
+ #
58
+ # 節気を返す
59
+ #
60
+ # @return [Cycle::AbstractSolarTerm] 節気
61
+ #
62
+ def odd_term
63
+ solar_terms.each do |term|
64
+ return term if term.index.odd?
65
+ end
66
+
67
+ context.resolver.solar_term.new
68
+ end
69
+
70
+ #
71
+ # 二十四節気を追加する
72
+ #
73
+ # @param [Cycle::AbstractSolarTerm] term 二十四節気
74
+ #
75
+ def add_term(term:)
76
+ solar_terms.push(term)
77
+ end
78
+
79
+ #
80
+ # 二十四節気を正しい順序にソートする
81
+ #
82
+ def sort
83
+ sorted = (solar_terms.sort do |termx, termy|
84
+ termx.index <=> termy.index
85
+ end)
86
+
87
+ unless reset_term?(solar_terms: sorted)
88
+ @solar_terms = sorted
89
+ return
90
+ end
91
+
92
+ @solar_terms = reset(terms: sorted)
93
+ end
94
+
95
+ #
96
+ # 大余に対応する二十四節気
97
+ #
98
+ # @param [Integer] day 大余
99
+ #
100
+ # @return [Cycle::AbstractSolarTerm] 二十四節気
101
+ #
102
+
103
+ #
104
+ # 大余に対応する二十四節気
105
+ #
106
+ # @param [Integer] day 大余
107
+ # @param [Meta] meta メタ情報
108
+ #
109
+ # @return [Cycle::AbstractSolarTerm] 二十四節気
110
+ #
111
+ def solar_term_by_day(day:, meta:)
112
+ target = context.resolver.remainder.new(day: day, minute: 0, second: 0)
113
+
114
+ meta.all_solar_terms.each_cons(2) do |current_solar_term, next_solar_term|
115
+ in_range = Tool::RemainderComparer.in_range?(
116
+ target: target, start: current_solar_term.remainder, last: next_solar_term.remainder
117
+ )
118
+ return current_solar_term if in_range
119
+ end
120
+
121
+ last_solar_term(target: target, meta: meta)
122
+ end
123
+
124
+ private
125
+
126
+ #
127
+ # 二十四節気の折り返し(23 -> 0)があるか
128
+ #
129
+ # @param [Array<Cyle::AbstractSolarTerm>] solar_terms 二十四節気
130
+ #
131
+ # @return [True] 折り返しあり
132
+ # @return [False] 折り返しなし
133
+ #
134
+ def reset_term?(solar_terms: [])
135
+ first = false
136
+ last = false
137
+
138
+ solar_terms.each do |term|
139
+ index = term.index
140
+ case index
141
+ when Cycle::AbstractSolarTerm::FIRST_INDEX
142
+ first = true
143
+ when Cycle::AbstractSolarTerm::LAST_INDEX
144
+ last = true
145
+ end
146
+ end
147
+
148
+ first && last
149
+ end
150
+
151
+ #
152
+ # 二十四節気を終端で折り返す
153
+ #
154
+ # @param [Array<Cyle::AbstractSolarTerm>] terms 二十四節気
155
+ #
156
+ # @return [Array<Cyle::AbstractSolarTerm>] 折り返し済みの二十四節気
157
+ #
158
+ def reset(terms: [])
159
+ first = []
160
+ second = []
161
+
162
+ terms.each do |term|
163
+ # NOTE: 二十四節気は最大3つとすると、 「23, 0」「22, 23, 0」「23, 0, 1」 での折り返しが考えられる
164
+ if term.index >= (Cycle::AbstractSolarTerm::LAST_INDEX - 2)
165
+ second.push(term)
166
+ next
167
+ end
168
+
169
+ first.push(term)
170
+ end
171
+
172
+ # 0以前を先頭にする
173
+ second += first
174
+
175
+ second
176
+ end
177
+
178
+ #
179
+ # 最後の二十四節気を返す
180
+ #
181
+ # @param [Cycle::AbstractRemainder] target 対象の大余情報
182
+ # @param [Meta] meta メタ情報
183
+ #
184
+ # @return [Cycle::AbstractSolarTerm] 二十四節気
185
+ #
186
+ def last_solar_term(target:, meta:)
187
+ last = meta.all_solar_terms[-1]
188
+
189
+ empty_solar_term = context.resolver.solar_term.new
190
+
191
+ return empty_solar_term unless last
192
+
193
+ if Tool::RemainderComparer.in_limit?(target: target, start: last.remainder,
194
+ limit: LAST_DAY_LIMIT)
195
+ return last
196
+ end
197
+
198
+ empty_solar_term
199
+ end
200
+ end
201
+ end
202
+ end
203
+ end