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.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/README.md +41 -8
- data/VERSION +1 -1
- data/doc/gengou.md +1 -1
- data/doc/operation/csv/month.csv +5 -5
- data/doc/operation/operation.xlsx +0 -0
- data/images/logo-text.png +0 -0
- data/lib/zakuro/calculation/base/gengou.rb +2 -4
- data/lib/zakuro/calculation/base/year.rb +1 -1
- data/lib/zakuro/calculation/era/gengou/abstract_scroll.rb +2 -2
- data/lib/zakuro/calculation/era/gengou/internal/publisher.rb +1 -1
- data/lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb +4 -4
- data/lib/zakuro/calculation/era/gengou/internal/reserve/empty_link.rb +3 -3
- data/lib/zakuro/calculation/era/gengou/internal/reserve/named_list.rb +1 -1
- data/lib/zakuro/calculation/era/version/internal/crawler.rb +3 -3
- data/lib/zakuro/calculation/monthly/abstract_lunar_phase.rb +1 -1
- data/lib/zakuro/calculation/monthly/internal/date_comparer.rb +78 -0
- data/lib/zakuro/calculation/monthly/{meta → internal/meta}/all_solar_term.rb +1 -1
- data/lib/zakuro/calculation/monthly/{meta → internal/meta}/meta_collector.rb +2 -2
- data/lib/zakuro/calculation/monthly/{first_day.rb → internal/part/first_day.rb} +2 -2
- data/lib/zakuro/calculation/monthly/{meta.rb → internal/part/meta.rb} +1 -1
- data/lib/zakuro/calculation/monthly/internal/solar_term_selector.rb +203 -0
- data/lib/zakuro/calculation/monthly/month.rb +30 -125
- data/lib/zakuro/calculation/monthly/operated_month.rb +5 -2
- data/lib/zakuro/calculation/range/medieval_annual_range.rb +0 -2
- data/lib/zakuro/calculation/range/transfer/gengou_scroller.rb +24 -10
- data/lib/zakuro/calculation/stella/solar/abstract_average.rb +3 -3
- data/lib/zakuro/calculation/summary/internal/option/dropped_date.rb +102 -0
- data/lib/zakuro/calculation/summary/internal/option/vanished_date.rb +111 -0
- data/lib/zakuro/calculation/summary/internal/option.rb +4 -137
- data/lib/zakuro/calculation/summary/japan/range.rb +4 -5
- data/lib/zakuro/calculation/summary/western/single.rb +0 -2
- data/lib/zakuro/context/version_class_resolver.rb +5 -5
- data/lib/zakuro/era/japan/calendar.rb +4 -4
- data/lib/zakuro/era/japan/gengou/alignment/division.rb +2 -2
- data/lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb +2 -2
- data/lib/zakuro/era/japan/gengou/alignment.rb +5 -3
- data/lib/zakuro/era/japan/gengou/resource/parser.rb +17 -16
- data/lib/zakuro/era/japan/gengou/resource/validator.rb +3 -394
- data/lib/zakuro/era/japan/gengou/resource/yaml/set-001-until-south.yaml +2 -2
- data/lib/zakuro/era/japan/gengou.rb +3 -3
- data/lib/zakuro/era/japan/type/base/both/date.rb +51 -0
- data/lib/zakuro/era/japan/type/base/both/year.rb +53 -0
- data/lib/zakuro/era/japan/type/base/gengou.rb +177 -0
- data/lib/zakuro/era/japan/type/base/gengou_set.rb +78 -0
- data/lib/zakuro/era/japan/type/base/switch_date.rb +74 -0
- data/lib/zakuro/era/japan/type/base/version_range.rb +189 -0
- data/lib/zakuro/era/japan/type/validation/both/date.rb +99 -0
- data/lib/zakuro/era/japan/type/validation/both/year.rb +75 -0
- data/lib/zakuro/era/japan/type/validation/gengou.rb +93 -0
- data/lib/zakuro/era/japan/type/validation/gengou_set.rb +133 -0
- data/lib/zakuro/era/japan/type/validation/switch_date.rb +73 -0
- data/lib/zakuro/era/japan/type/validation/version_range.rb +109 -0
- data/lib/zakuro/era/japan/type/validation/version_root.rb +102 -0
- data/lib/zakuro/era/japan/version/resource/parser.rb +266 -0
- data/lib/zakuro/era/japan/version/resource/validator.rb +37 -0
- data/lib/zakuro/era/japan/version/resource/yaml/version.yaml +80 -0
- data/lib/zakuro/era/japan/version/resource.rb +22 -0
- data/lib/zakuro/era/japan/version.rb +4 -115
- data/lib/zakuro/era/western/calendar.rb +2 -2
- data/lib/zakuro/exception/zakuro_error.rb +1 -1
- data/lib/zakuro/merchant.rb +5 -5
- data/lib/zakuro/operation/month/parser.rb +2 -2
- data/lib/zakuro/operation/yaml/month.yaml +5 -5
- data/lib/zakuro/output/logger.rb +4 -4
- data/lib/zakuro/parameter/catalog/basis_date.rb +55 -0
- data/lib/zakuro/parameter/catalog/column.rb +57 -0
- data/lib/zakuro/parameter/catalog/option.rb +60 -0
- data/lib/zakuro/parameter/catalog/range.rb +81 -0
- data/lib/zakuro/parameter/condition.rb +108 -0
- data/lib/zakuro/result/core.rb +2 -2
- data/lib/zakuro/{tools → tool}/remainder_comparer.rb +2 -4
- data/lib/zakuro/{tools → tool}/stringifier.rb +3 -3
- data/lib/zakuro/{tools → tool}/typeconv.rb +2 -2
- data/lib/zakuro/{tools → tool}/typeof.rb +2 -2
- data/lib/zakuro/version/daien/const/number.rb +42 -39
- data/lib/zakuro/version/daien/const/remainder.rb +38 -35
- data/lib/zakuro/version/daien/cycle/remainder.rb +77 -74
- data/lib/zakuro/version/daien/cycle/solar_term.rb +18 -15
- data/lib/zakuro/version/daien/daien.rb +8 -5
- data/lib/zakuro/version/daien/monthly/lunar_phase.rb +67 -64
- data/lib/zakuro/version/daien/option/dropped_date/parameter.rb +15 -12
- data/lib/zakuro/version/daien/option/vanished_date/parameter.rb +15 -12
- data/lib/zakuro/version/daien/range/annual_range.rb +27 -24
- data/lib/zakuro/version/daien/stella/lunar/adjustment.rb +209 -206
- data/lib/zakuro/version/daien/stella/lunar/localization.rb +32 -29
- data/lib/zakuro/version/daien/stella/lunar/location.rb +53 -50
- data/lib/zakuro/version/daien/stella/lunar/value.rb +65 -62
- data/lib/zakuro/version/daien/stella/origin/average_november.rb +23 -20
- data/lib/zakuro/version/daien/stella/origin/lunar_age.rb +42 -39
- data/lib/zakuro/version/daien/stella/origin/winter_solstice.rb +44 -41
- data/lib/zakuro/version/daien/stella/solar/adjustment.rb +74 -71
- data/lib/zakuro/version/daien/stella/solar/average.rb +68 -65
- data/lib/zakuro/version/daien/stella/solar/interval.rb +95 -92
- data/lib/zakuro/version/daien/stella/solar/location.rb +41 -38
- data/lib/zakuro/version/daien/stella/solar/value.rb +21 -18
- data/lib/zakuro/version/genka/const/number.rb +31 -28
- data/lib/zakuro/version/genka/const/remainder.rb +20 -17
- data/lib/zakuro/version/genka/cycle/remainder.rb +72 -69
- data/lib/zakuro/version/genka/cycle/solar_term.rb +18 -15
- data/lib/zakuro/version/genka/genka.rb +8 -5
- data/lib/zakuro/version/genka/monthly/lunar_phase.rb +82 -79
- data/lib/zakuro/version/genka/option/dropped_date/parameter.rb +13 -10
- data/lib/zakuro/version/genka/option/vanished_date/parameter.rb +13 -10
- data/lib/zakuro/version/genka/range/annual_range.rb +57 -54
- data/lib/zakuro/version/genka/stella/origin/first_term.rb +44 -41
- data/lib/zakuro/version/genka/stella/origin/january.rb +38 -35
- data/lib/zakuro/version/genka/stella/solar/average.rb +24 -21
- data/lib/zakuro/version/gihou/const/number.rb +40 -37
- data/lib/zakuro/version/gihou/const/remainder.rb +32 -29
- data/lib/zakuro/version/gihou/cycle/remainder.rb +38 -35
- data/lib/zakuro/version/gihou/cycle/solar_term.rb +18 -15
- data/lib/zakuro/version/gihou/gihou.rb +8 -5
- data/lib/zakuro/version/gihou/monthly/lunar_phase.rb +68 -65
- data/lib/zakuro/version/gihou/option/dropped_date/parameter.rb +13 -10
- data/lib/zakuro/version/gihou/option/vanished_date/parameter.rb +13 -10
- data/lib/zakuro/version/gihou/range/annual_range.rb +27 -24
- data/lib/zakuro/version/gihou/stella/lunar/adjustment.rb +212 -209
- data/lib/zakuro/version/gihou/stella/lunar/localization.rb +32 -29
- data/lib/zakuro/version/gihou/stella/lunar/location.rb +53 -50
- data/lib/zakuro/version/gihou/stella/lunar/value.rb +65 -62
- data/lib/zakuro/version/gihou/stella/origin/average_november.rb +23 -20
- data/lib/zakuro/version/gihou/stella/origin/lunar_age.rb +42 -39
- data/lib/zakuro/version/gihou/stella/origin/winter_solstice.rb +44 -41
- data/lib/zakuro/version/gihou/stella/solar/adjustment.rb +74 -71
- data/lib/zakuro/version/gihou/stella/solar/average.rb +67 -64
- data/lib/zakuro/version/gihou/stella/solar/interval.rb +95 -92
- data/lib/zakuro/version/gihou/stella/solar/location.rb +41 -38
- data/lib/zakuro/version/gihou/stella/solar/value.rb +21 -18
- data/lib/zakuro/version/gregorio/gregorio.rb +8 -5
- data/lib/zakuro/version/houryaku/houryaku.rb +8 -5
- data/lib/zakuro/version/joukyou/joukyou.rb +8 -5
- data/lib/zakuro/version/kansei/kansei.rb +8 -5
- data/lib/zakuro/version/senmyou/const/number.rb +40 -37
- data/lib/zakuro/version/senmyou/const/remainder.rb +35 -32
- data/lib/zakuro/version/senmyou/cycle/remainder.rb +74 -71
- data/lib/zakuro/version/senmyou/cycle/solar_term.rb +18 -15
- data/lib/zakuro/version/senmyou/monthly/lunar_phase.rb +69 -66
- data/lib/zakuro/version/senmyou/option/dropped_date/parameter.rb +15 -12
- data/lib/zakuro/version/senmyou/option/vanished_date/parameter.rb +15 -12
- data/lib/zakuro/version/senmyou/range/annual_range.rb +27 -24
- data/lib/zakuro/version/senmyou/senmyou.rb +8 -5
- data/lib/zakuro/version/senmyou/stella/lunar/adjustment.rb +206 -203
- data/lib/zakuro/version/senmyou/stella/lunar/localization.rb +32 -29
- data/lib/zakuro/version/senmyou/stella/lunar/location.rb +60 -57
- data/lib/zakuro/version/senmyou/stella/lunar/value.rb +66 -63
- data/lib/zakuro/version/senmyou/stella/origin/average_november.rb +23 -20
- data/lib/zakuro/version/senmyou/stella/origin/lunar_age.rb +42 -39
- data/lib/zakuro/version/senmyou/stella/origin/winter_solstice.rb +44 -41
- data/lib/zakuro/version/senmyou/stella/solar/adjustment.rb +74 -71
- data/lib/zakuro/version/senmyou/stella/solar/average.rb +67 -64
- data/lib/zakuro/version/senmyou/stella/solar/interval.rb +93 -90
- data/lib/zakuro/version/senmyou/stella/solar/location.rb +41 -38
- data/lib/zakuro/version/senmyou/stella/solar/value.rb +23 -20
- data/lib/zakuro/version/tenpou/tenpou.rb +8 -5
- metadata +44 -20
- data/lib/zakuro/condition.rb +0 -306
- data/lib/zakuro/era/japan/gengou/resource/type.rb +0 -356
- data/lib/zakuro/tools/gengou_range_comparer.rb +0 -82
- /data/lib/zakuro/calculation/monthly/{operated_solar_term.rb → internal/operated_solar_term.rb} +0 -0
- /data/lib/zakuro/calculation/monthly/{const.rb → internal/part/const.rb} +0 -0
- /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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9dff0990ea44fc948599f2db2f6f4492caff773c328daabc39331716a31a43d2
|
|
4
|
+
data.tar.gz: 41a7b9296620670afec817686125f54bed22ee9f0410b544976fd819db7f0dd4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fe25f45f51c09f32fa1030defd7f05e5fa7ef0dd154b89840891f2d3c10c0736a13d9e327288c39f61d8a32dc3a248cb67a50c2e29b7c94cd8b3f22bc7389be9
|
|
7
|
+
data.tar.gz: 1251d5ac296435da1fcdc17db8493188432141b17c4dc21cea8cde0436f4597bd610b97ccbcbd225fd6d1a522ff106e70d643e11ac4211e42969a56cf91dd59a
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+

|
|
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
|
-
|
|
31
|
+
[日本の暦日データベース](https://eco.mtk.nao.ac.jp/cgi-bin/koyomi/caldb.cgi) に近しい機能を持ちますが、
|
|
16
32
|
|
|
17
|
-
|
|
33
|
+
暦算値や没日・滅日を併せて結果出力する点が異なります。
|
|
18
34
|
|
|
19
|
-
|
|
35
|
+
# 導入
|
|
20
36
|
|
|
21
|
-
|
|
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.
|
|
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| |
|
data/doc/operation/csv/month.csv
CHANGED
|
@@ -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,-,
|
|
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,-,
|
|
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
|
|
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
|
|
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-
|
|
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
|
-
|
|
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.
|
|
121
|
+
first_line.empty? && second_line.empty?
|
|
124
122
|
end
|
|
125
123
|
end
|
|
126
124
|
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.
|
|
182
|
+
return destination if destination.empty?
|
|
183
183
|
|
|
184
|
-
return destination if source.
|
|
184
|
+
return destination if source.empty?
|
|
185
185
|
|
|
186
186
|
last = source[-1]
|
|
187
187
|
destination[0] = last if destination[0].name == last.name
|
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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::
|
|
147
|
+
gengou: Japan::Type::Base::Gengou.new,
|
|
148
148
|
start_date: start_date, last_date: last_date
|
|
149
149
|
)
|
|
150
150
|
end
|
|
@@ -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
|
|
@@ -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.
|
|
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 '
|
|
3
|
+
require_relative '../../../../era/western/calendar'
|
|
4
4
|
|
|
5
|
-
require_relative '
|
|
5
|
+
require_relative '../../../cycle/abstract_remainder'
|
|
6
6
|
|
|
7
7
|
# :nodoc:
|
|
8
8
|
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
|