zakuro 0.9.4 → 1.0.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 (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