zakuro 0.9.1 → 0.9.3
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/README.md +20 -18
- data/VERSION +1 -1
- data/doc/condition.md +3 -1
- data/doc/dropped_date.md +25 -0
- data/doc/expection.md +11 -0
- data/doc/operation/csv/month.csv +5 -5
- data/doc/operation/operation.xlsx +0 -0
- data/doc/vanished_date.md +26 -0
- data/lib/zakuro/calculation/cycle/abstract_remainder.rb +26 -0
- data/lib/zakuro/calculation/cycle/abstract_solar_term.rb +1 -1
- data/lib/zakuro/calculation/era/gengou/abstract_scroll.rb +2 -2
- data/lib/zakuro/calculation/era/gengou/dated_scroll.rb +6 -2
- data/lib/zakuro/calculation/era/gengou/internal/counter.rb +5 -5
- data/lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb +12 -5
- data/lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb +14 -8
- data/lib/zakuro/calculation/era/gengou/internal/reserve/dated_list.rb +3 -2
- data/lib/zakuro/calculation/era/gengou/internal/reserve/dated_range.rb +4 -2
- data/lib/zakuro/calculation/era/gengou/internal/reserve/named_list.rb +5 -3
- data/lib/zakuro/calculation/era/gengou/internal/reserve/named_range.rb +10 -5
- data/lib/zakuro/calculation/era/gengou/named_scroll.rb +5 -2
- data/lib/zakuro/calculation/monthly/initialized_month.rb +4 -2
- data/lib/zakuro/calculation/monthly/meta/all_solar_term.rb +64 -0
- data/lib/zakuro/calculation/monthly/meta/meta_collector.rb +80 -0
- data/lib/zakuro/calculation/monthly/meta.rb +60 -0
- data/lib/zakuro/calculation/monthly/month.rb +60 -5
- data/lib/zakuro/calculation/monthly/operated_month.rb +6 -3
- data/lib/zakuro/calculation/option/dropped_date/location.rb +12 -23
- data/lib/zakuro/calculation/option/vanished_date/location.rb +9 -2
- data/lib/zakuro/calculation/range/abstract_full_range.rb +19 -2
- data/lib/zakuro/calculation/range/abstract_operation_range.rb +20 -2
- data/lib/zakuro/calculation/range/dated_full_range.rb +3 -1
- data/lib/zakuro/calculation/range/dated_operation_range.rb +3 -1
- data/lib/zakuro/calculation/range/medieval_annual_range.rb +1 -1
- data/lib/zakuro/calculation/range/named_full_range.rb +3 -1
- data/lib/zakuro/calculation/range/named_operation_range.rb +3 -1
- data/lib/zakuro/calculation/range/transfer/gengou_scroller.rb +2 -1
- data/lib/zakuro/calculation/range/transfer/year_boundary.rb +10 -8
- data/lib/zakuro/calculation/stella/solar/abstract_average.rb +8 -34
- data/lib/zakuro/calculation/summary/internal/option.rb +51 -25
- data/lib/zakuro/calculation/summary/western/specifier/single_day.rb +1 -1
- data/lib/zakuro/era/japan/calendar.rb +2 -2
- data/lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb +1 -1
- data/lib/zakuro/era/japan/gengou/alignment.rb +14 -2
- data/lib/zakuro/era/japan/gengou/resource/parser.rb +83 -25
- data/lib/zakuro/era/japan/gengou/resource/type.rb +81 -26
- data/lib/zakuro/era/japan/gengou/resource/validator.rb +102 -23
- data/lib/zakuro/era/japan/gengou/resource/yaml/set-001-until-south.yaml +1123 -375
- data/lib/zakuro/era/japan/gengou/resource/yaml/set-002-from-north.yaml +487 -163
- data/lib/zakuro/era/japan/gengou/resource/yaml/set-003-modern.yaml +30 -10
- data/lib/zakuro/era/japan/gengou/resource.rb +16 -0
- data/lib/zakuro/era/japan/gengou.rb +7 -4
- data/lib/zakuro/era/western/calendar.rb +5 -11
- data/lib/zakuro/era/western/date_text.rb +40 -0
- data/lib/zakuro/gateway/locale/date.rb +2 -2
- data/lib/zakuro/operation/month/validator.rb +7 -1
- data/lib/zakuro/operation/yaml/month.yaml +15 -15
- data/lib/zakuro/output/logger.rb +21 -3
- data/lib/zakuro/tools/remainder_comparer.rb +97 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79211341aba598e1c98e7b3df3ffe0ce6f3016027fe0b2459bd2c68a18703e89
|
4
|
+
data.tar.gz: 17d2537acf7d477b6292d1b14e02dbd355499d1c12cf2491e419124108175d9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0196f4cd32a1b8b2d9d517ead1abf747f3be612d59514f68ef75670169c17da9e5222b8d1b63504520653aca6646a840a46b052246d192d27e22146372b52e14'
|
7
|
+
data.tar.gz: 8a9f4e91afd4d07868a470e8e372bd0534ddc9f72e55551febc3aba3970b589c896cf0ca8555e1bb71f1606d78078eabd5f70f5125b1680fd1e0b1eaeece9b54
|
data/README.md
CHANGED
@@ -40,28 +40,30 @@ Or install it yourself as:
|
|
40
40
|
|
41
41
|
1日検索/期間検索に対応しております。
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|開始日|暦
|
46
|
-
|
47
|
-
|445/01/24|元嘉暦|
|
48
|
-
|698/02/16|儀鳳暦|A
|
49
|
-
| | |B
|
50
|
-
| | |C
|
51
|
-
|764/02/07|大衍暦|A
|
52
|
-
| | |B
|
53
|
-
| | |C
|
54
|
-
|862/02/03|宣明暦|
|
55
|
-
|1685/02/04|貞享暦|
|
56
|
-
|1755/02/11|宝暦暦|
|
57
|
-
|1798/02/16|寛政暦|
|
58
|
-
|1844/02/18|天保暦|
|
59
|
-
|1872/12/09|グレゴリオ暦|
|
43
|
+
下記表で暦算ありの暦は使用可能です。
|
44
|
+
|
45
|
+
|開始日|暦 |計算方法|暦算|没日|滅日|
|
46
|
+
|:----|:----|:----|:---|:---|:---|
|
47
|
+
|445/01/24|元嘉暦| |✓|-|-|
|
48
|
+
|698/02/16|儀鳳暦|A|✓|-|-|
|
49
|
+
| | |B|-|-|-|
|
50
|
+
| | |C|-|-|-|
|
51
|
+
|764/02/07|大衍暦|A|✓|✓|✓|
|
52
|
+
| | |B|-|-|-|
|
53
|
+
| | |C|-|-|-|
|
54
|
+
|862/02/03|宣明暦| |✓|✓|✓|
|
55
|
+
|1685/02/04|貞享暦| |-|-|-|
|
56
|
+
|1755/02/11|宝暦暦| |-|-|-|
|
57
|
+
|1798/02/16|寛政暦| |-|-|-|
|
58
|
+
|1844/02/18|天保暦| |-|-|-|
|
59
|
+
|1872/12/09|グレゴリオ暦| |-|-|-|
|
60
60
|
|
61
61
|
表中A-Cは月の運動の計算手順ごとに分類されます。
|
62
62
|
|
63
63
|
現在は「長慶宣明暦算法」の計算手順Aのみ対応しております。
|
64
64
|
|
65
|
+
「没日」「滅日」は計算できますが、正誤を確認中です。
|
66
|
+
|
65
67
|
# 使用方法
|
66
68
|
|
67
69
|
[使用方法](./doc/usage.md) を参照してください。
|
@@ -107,7 +109,7 @@ Or install it yourself as:
|
|
107
109
|
|項目 |有無|
|
108
110
|
|:----|:----|
|
109
111
|
|[没日](./doc/dropped_date.md)|✓|
|
110
|
-
|
112
|
+
|[滅日](./doc/vanished_date.md)|✓|
|
111
113
|
|
112
114
|
# 例外
|
113
115
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.3
|
data/doc/condition.md
CHANGED
data/doc/dropped_date.md
CHANGED
@@ -132,3 +132,28 @@ p.2055-2056
|
|
132
132
|
#### 没余上限
|
133
133
|
|
134
134
|
`策餘` (15943)
|
135
|
+
|
136
|
+
|
137
|
+
# 備考
|
138
|
+
|
139
|
+
## 二十四節気の引き当て
|
140
|
+
『日本暦日便覧』により、対応する二十四節気nは大余を基準に引き当てる
|
141
|
+
|
142
|
+
* 二十四節気nの大余 <= 当日の大余(定朔 + 日数 - 1) < 二十四節気n + 1の大余
|
143
|
+
* 例外として、定朔の小余と秒が0の場合に限り、次のように計算する
|
144
|
+
* 二十四節気nの大余 <= 当日の大余(定朔 + 日数 - 1) < (二十四節気n + 1の大余) + 1
|
145
|
+
* 下記計算結果によりこのようになった
|
146
|
+
* 貞観12年7月18日
|
147
|
+
* 天喜5年3月11日
|
148
|
+
* 寛元1年11月4日
|
149
|
+
* 永享2年7月26日
|
150
|
+
* 元和3年3月19日
|
151
|
+
|
152
|
+
## 『日本暦日原典』との照合
|
153
|
+
『日本暦日便覧』は初版を参考にしているものと思われるが、当ライブラリは第四版に準拠するため、次のような相違が見られる
|
154
|
+
|
155
|
+
| 西暦日 | 和暦日(初版) | 和暦日(第四版) | 備考 |
|
156
|
+
| ---------- | ---------------- | ---------------- | ------------------ |
|
157
|
+
| 0807-11-29 | 大同2年10月27日 | 大同2年10月26日 | 第四版のみ注釈あり |
|
158
|
+
| 0810-12-17 | 弘仁1年11月18日 | 弘仁1年11月17日 | 第四版のみ注釈あり |
|
159
|
+
| 0823-12-05 | 弘仁14年10月30日 | 弘仁14年10月29日 | 初版のみ注釈あり |
|
data/doc/expection.md
CHANGED
@@ -106,3 +106,14 @@
|
|
106
106
|
| 二十四節気 | | solar_term | | Zakuro::Result::Data::Option::DroppedDate::SolarTerm | | |
|
107
107
|
| 二十四節気番号 | | | index | Integer | 6 | |
|
108
108
|
| 二十四節気の大余小余 | | | remainder | String | 49-7203 | |
|
109
|
+
|
110
|
+
#### Zakuro::Result::Data::Option::VanishedDate::Option
|
111
|
+
|
112
|
+
キー: vanished_date
|
113
|
+
|
114
|
+
| 項目名 | キー名 | - | - | データ型 | 参考値 | 備考 |
|
115
|
+
| -------------------- | ----------- | ---------- | --------- | ------------------------------------------------------ | -------- | ------------------ |
|
116
|
+
| オプション値有無 | matched | | | True/False | true | |
|
117
|
+
| 演算値 | calculation | | | Zakuro::Result::Data::Option::VanishedDate::Calculation | | |
|
118
|
+
| 滅余 | | remainder | | String | 33-2666 | |
|
119
|
+
| 経朔 | | average_remainder | | String | 5-3769 | |
|
data/doc/operation/csv/month.csv
CHANGED
@@ -95,7 +95,7 @@
|
|
95
95
|
,125-1-a,-,125-1-1,125,-,779-4-21,宝亀 10年 4 大 辛未 7-1700,-,-,true,次月大小,-,-,小,大,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
|
96
96
|
,125-1-1,-,-,125,1,779-5-20,宝亀 10年 5 小 辛丑 36-2820,計算では36庚子であるが続日本紀4月に庚子の記事があるから進朔して37辛丑,5月朔のユリウス暦日は5月21日となる。,-,true,朔日相違,-,-,大,小,-,-,-,-,-,-,庚子,辛丑,779-5-20,779-5-21,36,37,1,1,-,-,-
|
97
97
|
,125-2-a,-,125-2-1,125,-,779-12-13,宝亀 10年 11 大 丁卯 3-54,-,-,true,次月大小,-,-,小,大,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
|
98
|
-
,125-2-1,-,-,125,2,780-1-11,宝亀 10年 12 大 丁酉 32-2481,計算では32丙申であるが翌月の正月が続日本紀によると丁卯朔となっているから,12月丁酉朔にしないと12月が31日になる。したがって12月朔のユリウス暦日は1月12日。,-,true
|
98
|
+
,125-2-1,-,-,125,2,780-1-11,宝亀 10年 12 大 丁酉 32-2481,計算では32丙申であるが翌月の正月が続日本紀によると丁卯朔となっているから,12月丁酉朔にしないと12月が31日になる。したがって12月朔のユリウス暦日は1月12日。,-,true,朔日相違,-,-,大,大,-,-,-,-,-,-,丙申,丁酉,780-1-11,780-1-12,32,33,1,1,-,-,-
|
99
99
|
,125-3-1,-,-,125,3,780-2-10,宝亀 11年 1 小 丁卯 2-1828,計算では2丙寅,続日本紀は正月朔丁卯,したがって正月朔のユリウス暦日は2月11日。,-,true,朔日相違,-,-,大,小,-,-,-,-,-,-,丙寅,丁卯,780-2-10,780-2-11,2,3,1,1,-,-,-
|
100
100
|
,125-4-a,-,125-4-1,125,-,780-3-11,宝亀 11年 2 大 丙申 32-954,-,-,true,次月大小,-,-,小,大,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
|
101
101
|
,125-4-1,-,-,125,4,780-4-9,宝亀 11年 3 小 丙寅 1-2852,計算では1乙丑,続日本紀は3月朔丙寅,したがって3月朔のユリウス暦日は4月10日。,日本暦日原典の誤り。「したがって正月朔」ではなく「したがって3月朔」,true,朔日相違,-,-,大,小,-,-,-,-,-,-,乙丑,丙寅,780-4-9,780-4-10,1,2,1,1,-,-,-
|
@@ -364,8 +364,8 @@
|
|
364
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
|
-
,242-1-a,-,242-1-1,242,-,1129-8-17,大治 4年 閏7 小 丁未 43-1179,-,-,true
|
368
|
-
,242-1-1,-,-,242,1,1129-9-16,大治 4年 8 大 丙子 13-6547,"計算は13丁丑であるが中右記により丙子, 8月丙子朔のユリウス暦日は9月15日となる。これは皇和通暦で中根元圭が「章首の後, 閏法もし8月を得ればまた必ず大小を消息してこれを7月に退く」と書いてあるように, このあとも何回かこの理由で干支が変更され, 閏が8月から7月に移された。これを退閏という。",-,true
|
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,-,-,-
|
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,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
|
@@ -469,8 +469,8 @@
|
|
469
469
|
,346-0-1,-,-,346,-,1441-12-14/1442-1-13,-,計算では朔旦冬至となる。これを臨時朔旦冬至として避けるために甲子を癸亥にして冬至を11月2日にしたもの。12月の変更は計算通り甲午にしておくと11月が31日になってしまうから。,-,false,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
|
470
470
|
,348-1-a,-,348-1-1,348,-,1449-10-17,宝徳 1年 10 小 戊申 44-2244,-,-,true,次月大小,-,-,大,小,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
|
471
471
|
,348-1-1,348-0-1,-,348,1,1449-11-16,宝徳 1年 閏10 小 丁丑 14-22,"計算では14戊寅, 康富記により丁丑, 閏10月丁丑朔のユリウス暦日は11月15日となる。",-,true,朔旦冬至,11月,閏10月,小,小,0,-,-,-,1449-12-15,-,戊寅,丁丑,1449-11-16,1449-11-15,14,13,-1,-1,-,-,-
|
472
|
-
,348-2-1,348-0-1,-,348,2,1449-12-15,宝徳 1年 11 大 丙午 43-5895,"計算では43丁未, 康富記により丙午, 11月丙午朔のユリウス暦日は12月14日となる。",-,true
|
473
|
-
,348-3-1,348-0-1,-,348,3,1450-1-14,宝徳 1年 12 大 丙子 13-2995,"計算では13丁丑, 康富記により丙子, 12月丙子朔のユリウス暦日は1月13日となる。",-,true
|
472
|
+
,348-2-1,348-0-1,-,348,2,1449-12-15,宝徳 1年 11 大 丙午 43-5895,"計算では43丁未, 康富記により丙午, 11月丙午朔のユリウス暦日は12月14日となる。",-,true,朔旦冬至,12月,11月,大,大,-,0,-,-,-,1449-11-16,丁未,丙午,1449-12-15,1449-12-14,43,42,-1,-1,-,-,-
|
473
|
+
,348-3-1,348-0-1,-,348,3,1450-1-14,宝徳 1年 12 大 丙子 13-2995,"計算では13丁丑, 康富記により丙子, 12月丙子朔のユリウス暦日は1月13日となる。",-,true,朔旦冬至,閏12月,12月,大,大,-,-,-,-,-,-,丁丑,丙子,1450-1-14,1450-1-13,13,12,-1,-1,-,-,-
|
474
474
|
,348-0-1,-,-,348,-,1449-11-16/1450-2-13,-,"計算では冬至が11月晦日になるのを, 強いて朔旦冬至にするため計算の12月丁未朔を11月丙午朔に変え閏を10月に移動させた。閏10月朔を計算通り戊寅朔にしておくと閏10月は28日しかなくなってしまう。11月朔丙午, 翌宝徳2年2月丙子とからその間の12月正月の干支は丙子, 丙子に変えないと31日の月ができてしまう。",-,false,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
|
475
475
|
,349-1-1,348-0-1,-,349,1,1450-2-13,宝徳 2年 1 大 丙午 43-7539,"計算では13丁未, 康富記により丙午, 正月丙午朔のユリウス暦日は2月12日となる。(前項の注記参照)",日本暦日原典の誤り。「丁未」ではなく「丁丑」,true,朔旦冬至,-,-,小,大,-,-,-,-,-,-,丁未,丙午,1450-2-13,1450-2-12,43,42,-1,-1,-,-,-
|
476
476
|
,355-1-a,-,355-1-1,355,-,1468-10-16,応仁 2年 10 大 丁亥 23-4972,-,変更なし,false,次月大小,-,-,大,大,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
|
Binary file
|
data/doc/vanished_date.md
CHANGED
@@ -84,3 +84,29 @@ p.2055-2056
|
|
84
84
|
#### 小余倍率
|
85
85
|
|
86
86
|
`倍参伍` (2 * 3 * 5) = 30
|
87
|
+
|
88
|
+
# 備考
|
89
|
+
|
90
|
+
## 前月経朔の引き当て
|
91
|
+
『日本暦日便覧』により、前月からの経朔で計算するパターンがある
|
92
|
+
|
93
|
+
| 天平神護3年3月1日 | 寛平3年5月1日 | 長寛2年11月1日 | 貞治4年閏9月1日 | 永正2年10月1日 | 寛文7年1月1日 |
|
94
|
+
| 宝亀6年2月1日 | 天延3年12月1日 | 仁安3年11月1日 | 応安6年9月1日 | 永正10年9月1日 | 延宝2年12月1日 |
|
95
|
+
| 承和2年12月1日 | 永観1年11月1日 | 安元2年10月1日 | 永徳1年8月1日 | 天文11年10月1日 | 天和2年11月1日 |
|
96
|
+
| 承和10年11月1日 | 正暦2年10月1日 | 元久1年7月1日 | 康応1年7月1日 | 天文19年9月1日 | |
|
97
|
+
| 仁寿1年10月1日 | 長保1年9月1日 | 建暦2年6月1日 | 応永4年6月1日 | 永禄1年8月1日 | |
|
98
|
+
| 貞観1年9月1日 | 寛弘4年8月1日 | 延慶1年11月1日 | 応永12年5月1日 | 永禄9年8月1日 | |
|
99
|
+
| 貞観9年8月1日 | 長和4年7月1日 | 正和1年11月1日 | 応永20年4月1日 | 天正2年7月1日 | |
|
100
|
+
| 貞観17年7月1日 | 康平3年7月1日 | 正和5年閏10月1日 | 延徳1年12月1日 | 天正10年6月1日 | |
|
101
|
+
| 元慶7年6月1日 | 治暦4年6月1日 | 元応2年10月1日 | 明応6年11月1日 | 天正18年5月1日 | |
|
102
|
+
|
103
|
+
もし当月の経朔で計算できない場合は、前月からの経朔で計算している
|
104
|
+
|
105
|
+
## 『日本暦日原典』との照合
|
106
|
+
『日本暦日便覧』は初版を参考にしているものと思われるが、当ライブラリは第四版に準拠するため、次のような相違が見られる
|
107
|
+
|
108
|
+
| 西暦日 | 和暦日(初版) | 和暦日(第四版) | 備考 |
|
109
|
+
| ---------- | ---------------- | ---------------- | ----------------------------------------------- |
|
110
|
+
| 0807-11-27 | 大同2年10月24日 | 大同2年10月23日 | 第四版のみ注釈あり |
|
111
|
+
| 0823-12-03 | 弘仁14年10月27日 | 弘仁14年10月26日 | 初版のみ注釈あり |
|
112
|
+
| 0794-06-21 | 延暦13年5月19日 | 延暦13年5月18日 | 初版/第四版の注釈相違。第四版では運用値に寄せる |
|
@@ -163,6 +163,22 @@ module Zakuro
|
|
163
163
|
clone.set(day: sum_day, minute: sum_minute, second: sum_second)
|
164
164
|
end
|
165
165
|
|
166
|
+
#
|
167
|
+
# (非破壊的に)大余のみを加算する
|
168
|
+
#
|
169
|
+
# @param [Integer] term 他の大余
|
170
|
+
#
|
171
|
+
# @return [AbstractRemainder] 加算結果
|
172
|
+
#
|
173
|
+
def add_day(term)
|
174
|
+
sum_day = day + term
|
175
|
+
sum_day, sum_minute, sum_second = carry(
|
176
|
+
sum_day, minute, second
|
177
|
+
)
|
178
|
+
|
179
|
+
clone.set(day: sum_day, minute: sum_minute, second: sum_second)
|
180
|
+
end
|
181
|
+
|
166
182
|
#
|
167
183
|
# (破壊的に)加算する
|
168
184
|
#
|
@@ -438,6 +454,16 @@ module Zakuro
|
|
438
454
|
self
|
439
455
|
end
|
440
456
|
|
457
|
+
#
|
458
|
+
# 大余のみか
|
459
|
+
#
|
460
|
+
# @return [True] 大余のみ
|
461
|
+
# @return [False] 小余、秒あり
|
462
|
+
#
|
463
|
+
def only_day?
|
464
|
+
minute.zero? && second.zero?
|
465
|
+
end
|
466
|
+
|
441
467
|
#
|
442
468
|
# 特定の文字フォーマットにして出力する
|
443
469
|
#
|
@@ -23,9 +23,9 @@ module Zakuro
|
|
23
23
|
attr_reader :monthly_last_date
|
24
24
|
# @return [Reserve::AbstractRange] 予約範囲
|
25
25
|
attr_reader :range
|
26
|
-
# @return [Array<
|
26
|
+
# @return [Array<Counter>] 1行目元号
|
27
27
|
attr_reader :first_gengou
|
28
|
-
# @return [Array<
|
28
|
+
# @return [Array<Counter>] 2行目元号
|
29
29
|
attr_reader :second_gengou
|
30
30
|
# @return [Connector] 行変更済元号
|
31
31
|
attr_reader :connector
|
@@ -19,9 +19,13 @@ module Zakuro
|
|
19
19
|
#
|
20
20
|
# @param [Western::Calendar] start_date 西暦開始日(最大範囲)
|
21
21
|
# @param [Western::Calendar] last_date 西暦終了日(最大範囲)
|
22
|
+
# @param [True, False] operated 運用値設定
|
22
23
|
#
|
23
|
-
def initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new
|
24
|
-
|
24
|
+
def initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new,
|
25
|
+
operated: false)
|
26
|
+
range = Reserve::DatedRange.new(
|
27
|
+
start_date: start_date, last_date: last_date, operated: operated
|
28
|
+
)
|
25
29
|
super(range: range)
|
26
30
|
end
|
27
31
|
end
|
@@ -41,8 +41,8 @@ module Zakuro
|
|
41
41
|
japan_year: INVALID_YEAR)
|
42
42
|
@gengou = gengou
|
43
43
|
@japan_year = japan_year
|
44
|
-
@japan_year = gengou.
|
45
|
-
@western_year = gengou.
|
44
|
+
@japan_year = gengou.start_year.japan if @japan_year == INVALID_YEAR
|
45
|
+
@western_year = gengou.start_year.western
|
46
46
|
|
47
47
|
@start_date = start_date.clone
|
48
48
|
@last_date = last_date.clone
|
@@ -58,7 +58,7 @@ module Zakuro
|
|
58
58
|
def japan_start_date
|
59
59
|
return Japan::Calendar.new if gengou.invalid?
|
60
60
|
|
61
|
-
gengou.
|
61
|
+
gengou.start_date.japan
|
62
62
|
end
|
63
63
|
|
64
64
|
#
|
@@ -187,7 +187,7 @@ module Zakuro
|
|
187
187
|
def select_valid_date
|
188
188
|
return if gengou.invalid?
|
189
189
|
|
190
|
-
@start_date = gengou.
|
190
|
+
@start_date = gengou.start_date.western.clone if start_date.invalid?
|
191
191
|
@last_date = gengou.last_date.clone if last_date.invalid?
|
192
192
|
end
|
193
193
|
|
@@ -197,7 +197,7 @@ module Zakuro
|
|
197
197
|
# @return [Western::Calendar]設定された元号の開始日
|
198
198
|
#
|
199
199
|
def native_start_date
|
200
|
-
gengou.
|
200
|
+
gengou.start_date.western
|
201
201
|
end
|
202
202
|
|
203
203
|
#
|
@@ -33,6 +33,9 @@ module Zakuro
|
|
33
33
|
attr_reader :start_date
|
34
34
|
# @return [Western::Calendar] 終了日
|
35
35
|
attr_reader :last_date
|
36
|
+
# @return [True] 運用値あり
|
37
|
+
# @return [True] 運用値なし
|
38
|
+
attr_reader :operated
|
36
39
|
# @return [Array<Japan::Alignment::LinearGengou>] 予約元号一覧
|
37
40
|
attr_reader :list
|
38
41
|
|
@@ -42,12 +45,14 @@ module Zakuro
|
|
42
45
|
# @param [Integer] index n行目元号
|
43
46
|
# @param [Western::Calendar] start_date 開始日
|
44
47
|
# @param [Western::Calendar] last_date 終了日
|
48
|
+
# @param [True, False] operated 運用値設定
|
45
49
|
#
|
46
50
|
def initialize(index:, start_date: Western::Calendar.new,
|
47
|
-
last_date: Western::Calendar)
|
51
|
+
last_date: Western::Calendar, operated: false)
|
48
52
|
@index = index
|
49
53
|
@start_date = start_date.clone
|
50
54
|
@last_date = last_date.clone
|
55
|
+
@operated = operated
|
51
56
|
@list = []
|
52
57
|
|
53
58
|
update
|
@@ -106,7 +111,7 @@ module Zakuro
|
|
106
111
|
def japan_start_date
|
107
112
|
return Japan::Calendar.new if invalid?
|
108
113
|
|
109
|
-
list[0].gengou.
|
114
|
+
list[0].gengou.start_date.japan.clone
|
110
115
|
end
|
111
116
|
|
112
117
|
#
|
@@ -117,7 +122,7 @@ module Zakuro
|
|
117
122
|
def western_start_date
|
118
123
|
return Western::Calendar.new if invalid?
|
119
124
|
|
120
|
-
list[0].gengou.
|
125
|
+
list[0].gengou.start_date.western.clone
|
121
126
|
end
|
122
127
|
|
123
128
|
#
|
@@ -139,7 +144,7 @@ module Zakuro
|
|
139
144
|
def western_start_year
|
140
145
|
return INVALID_YEAR if invalid?
|
141
146
|
|
142
|
-
list[0].gengou.
|
147
|
+
list[0].gengou.start_year.western.clone
|
143
148
|
end
|
144
149
|
|
145
150
|
#
|
@@ -210,7 +215,9 @@ module Zakuro
|
|
210
215
|
# @return [Array<Japan::Alignment::LinearGengou>] 元号
|
211
216
|
#
|
212
217
|
def line(start_date:, last_date:)
|
213
|
-
Japan::Gengou.line(
|
218
|
+
Japan::Gengou.line(
|
219
|
+
line: index, start_date: start_date, last_date: last_date, operated: operated
|
220
|
+
)
|
214
221
|
end
|
215
222
|
|
216
223
|
#
|
@@ -26,12 +26,18 @@ module Zakuro
|
|
26
26
|
#
|
27
27
|
# @param [Western::Calendar] start_date 西暦開始日
|
28
28
|
# @param [Western::Calendar] last_date 西暦終了日
|
29
|
+
# @param [True, False] operated 運用値設定
|
29
30
|
#
|
30
|
-
def initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new
|
31
|
+
def initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new,
|
32
|
+
operated: false)
|
31
33
|
last_date = start_date.clone if last_date.invalid?
|
32
34
|
|
33
|
-
@first_list = DatedList.new(
|
34
|
-
|
35
|
+
@first_list = DatedList.new(
|
36
|
+
first: true, start_date: start_date, last_date: last_date, operated: operated
|
37
|
+
)
|
38
|
+
@second_list = DatedList.new(
|
39
|
+
first: false, start_date: start_date, last_date: last_date, operated: operated
|
40
|
+
)
|
35
41
|
|
36
42
|
renew(last_date: last_date)
|
37
43
|
end
|
@@ -142,7 +148,7 @@ module Zakuro
|
|
142
148
|
first_last_year = first_list.western_last_year
|
143
149
|
second_last_year = second_list.western_last_year
|
144
150
|
|
145
|
-
return
|
151
|
+
return second_last_year if first_list.invalid?
|
146
152
|
|
147
153
|
return first_last_year if second_list.invalid?
|
148
154
|
|
@@ -187,7 +193,7 @@ module Zakuro
|
|
187
193
|
first_western_date = first_list.western_start_date
|
188
194
|
second_western_date = second_list.western_start_date
|
189
195
|
|
190
|
-
return
|
196
|
+
return second_list if first_western_date.invalid?
|
191
197
|
|
192
198
|
return first_list if second_western_date.invalid?
|
193
199
|
|
@@ -203,11 +209,11 @@ module Zakuro
|
|
203
209
|
# @return [False] 不正なし
|
204
210
|
#
|
205
211
|
def invalid_list?
|
206
|
-
return
|
212
|
+
return false unless first_list.invalid?
|
207
213
|
|
208
|
-
return
|
214
|
+
return false unless second_list.invalid?
|
209
215
|
|
210
|
-
|
216
|
+
true
|
211
217
|
end
|
212
218
|
end
|
213
219
|
end
|
@@ -21,13 +21,14 @@ module Zakuro
|
|
21
21
|
# @param [True, False] first true:1行目元号, false:2行目元号
|
22
22
|
# @param [Western::Calendar] start_date 開始日
|
23
23
|
# @param [Western::Calendar] last_date 終了日
|
24
|
+
# @param [True, False] operated 運用値設定
|
24
25
|
#
|
25
26
|
def initialize(first: true, start_date: Western::Calendar.new,
|
26
|
-
last_date: Western::Calendar)
|
27
|
+
last_date: Western::Calendar, operated: false)
|
27
28
|
@index = parse_index(first: first)
|
28
29
|
@start_date = start_date.clone
|
29
30
|
@last_date = last_date.invalid? ? start_date.clone : last_date.clone
|
30
|
-
super(index: @index, start_date: start_date, last_date: last_date)
|
31
|
+
super(index: @index, start_date: start_date, last_date: last_date, operated: operated)
|
31
32
|
end
|
32
33
|
|
33
34
|
#
|
@@ -19,9 +19,11 @@ module Zakuro
|
|
19
19
|
#
|
20
20
|
# @param [Western::Calendar] start_date 西暦開始日
|
21
21
|
# @param [Western::Calendar] last_date 西暦終了日
|
22
|
+
# @param [True, False] operated 運用値設定
|
22
23
|
#
|
23
|
-
def initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new
|
24
|
-
|
24
|
+
def initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new,
|
25
|
+
operated: false)
|
26
|
+
super(start_date: start_date, last_date: last_date, operated: operated)
|
25
27
|
end
|
26
28
|
end
|
27
29
|
end
|
@@ -25,13 +25,15 @@ module Zakuro
|
|
25
25
|
# @param [String] start_name 開始元号名
|
26
26
|
# @param [String] last_name 終了元号名
|
27
27
|
#
|
28
|
-
def initialize(first: true, start_name: INVALID_NAME, last_name: INVALID_NAME
|
28
|
+
def initialize(first: true, start_name: INVALID_NAME, last_name: INVALID_NAME,
|
29
|
+
operated: false)
|
29
30
|
@index = parse_index(first: first)
|
30
31
|
@start_date = Western::Calendar.new
|
31
32
|
@last_date = Western::Calendar.new
|
33
|
+
@operated = operated
|
32
34
|
|
33
35
|
locate(start_name: start_name, last_name: last_name)
|
34
|
-
super(index: index, start_date: start_date, last_date: last_date)
|
36
|
+
super(index: index, start_date: start_date, last_date: last_date, operated: operated)
|
35
37
|
end
|
36
38
|
|
37
39
|
private
|
@@ -107,7 +109,7 @@ module Zakuro
|
|
107
109
|
# @return [Array<Japan::Alignment::LinearGengou>] 元号
|
108
110
|
#
|
109
111
|
def line_by_name(name:)
|
110
|
-
Japan::Gengou.line_by_name(line: index, name: name)
|
112
|
+
Japan::Gengou.line_by_name(line: index, name: name, operated: operated)
|
111
113
|
end
|
112
114
|
|
113
115
|
#
|
@@ -23,15 +23,20 @@ module Zakuro
|
|
23
23
|
#
|
24
24
|
# @param [String] start_name 開始元号名
|
25
25
|
# @param [String] last_name 終了元号名
|
26
|
+
# @param [True, False] operated 運用値設定
|
26
27
|
#
|
27
|
-
def initialize(start_name: INVALID_NAME, last_name: INVALID_NAME)
|
28
|
-
@first_list = NamedList.new(
|
29
|
-
|
28
|
+
def initialize(start_name: INVALID_NAME, last_name: INVALID_NAME, operated: false)
|
29
|
+
@first_list = NamedList.new(
|
30
|
+
first: true, start_name: start_name, last_name: last_name, operated: operated
|
31
|
+
)
|
32
|
+
@second_list = NamedList.new(
|
33
|
+
first: false, start_name: start_name, last_name: last_name, operated: operated
|
34
|
+
)
|
30
35
|
|
31
36
|
start_date = western_start_date
|
32
37
|
last_date = western_last_date
|
33
38
|
|
34
|
-
super(start_date: start_date, last_date: last_date)
|
39
|
+
super(start_date: start_date, last_date: last_date, operated: operated)
|
35
40
|
end
|
36
41
|
|
37
42
|
#
|
@@ -58,7 +63,7 @@ module Zakuro
|
|
58
63
|
first_western_date = first_list.western_last_date
|
59
64
|
second_western_date = second_list.western_last_date
|
60
65
|
|
61
|
-
return
|
66
|
+
return second_list if first_western_date.invalid?
|
62
67
|
|
63
68
|
return first_list if second_western_date.invalid?
|
64
69
|
|
@@ -19,9 +19,12 @@ module Zakuro
|
|
19
19
|
#
|
20
20
|
# @param [String] start_name 開始元号名
|
21
21
|
# @param [String] last_name 終了元号名
|
22
|
+
# @param [True, False] operated 運用値設定
|
22
23
|
#
|
23
|
-
def initialize(start_name: INVALID_NAME, last_name: INVALID_NAME)
|
24
|
-
range = Reserve::NamedRange.new(
|
24
|
+
def initialize(start_name: INVALID_NAME, last_name: INVALID_NAME, operated: false)
|
25
|
+
range = Reserve::NamedRange.new(
|
26
|
+
start_name: start_name, last_name: last_name, operated: operated
|
27
|
+
)
|
25
28
|
super(range: range)
|
26
29
|
end
|
27
30
|
end
|
@@ -31,11 +31,13 @@ module Zakuro
|
|
31
31
|
# @param [FirstDay] first_day 月初日(朔日)
|
32
32
|
# @param [True, False] is_last_year 昨年の月/今年の月
|
33
33
|
# @param [Integer] phase_index 月齢(朔月、上弦、望月、下弦)
|
34
|
+
# @param [Meta] meta 付加情報
|
34
35
|
#
|
35
36
|
def initialize(context:, month_label: MonthLabel.new, solar_terms: [],
|
36
|
-
first_day: FirstDay.new, is_last_year: false, phase_index: -1
|
37
|
+
first_day: FirstDay.new, is_last_year: false, phase_index: -1,
|
38
|
+
meta: Meta.new)
|
37
39
|
super(context: context, month_label: month_label, solar_terms: solar_terms,
|
38
|
-
first_day: first_day)
|
40
|
+
first_day: first_day, meta: meta)
|
39
41
|
@is_last_year = is_last_year
|
40
42
|
@phase_index = phase_index
|
41
43
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :nodoc:
|
4
|
+
module Zakuro
|
5
|
+
# :nodoc:
|
6
|
+
module Calculation
|
7
|
+
# :nodoc:
|
8
|
+
module Monthly
|
9
|
+
#
|
10
|
+
# AllSolarTerm 月内の全ての二十四節気
|
11
|
+
#
|
12
|
+
module AllSolarTerm
|
13
|
+
class << self
|
14
|
+
#
|
15
|
+
# 取得する
|
16
|
+
#
|
17
|
+
# @param [Monthly::Month] before_month 前月
|
18
|
+
# @param [Monthly::Month] current_month 当月
|
19
|
+
#
|
20
|
+
# @return [Array<Cycle::AbstractSolarTerm>] その月の全ての二十四節気
|
21
|
+
#
|
22
|
+
def get(before_month:, current_month:)
|
23
|
+
remainder = current_month.remainder
|
24
|
+
solar_terms = current_month.solar_terms
|
25
|
+
before_solar_terms = before_month.solar_terms
|
26
|
+
|
27
|
+
resolve(
|
28
|
+
remainder: remainder, solar_terms: solar_terms,
|
29
|
+
before_solar_terms: before_solar_terms
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
#
|
36
|
+
# 前月を使用して解決する
|
37
|
+
#
|
38
|
+
# @param [Cycle::AbstractRemainder] remainder 月初日の大余小余
|
39
|
+
# @param [Array<Cycle::AbstractSolarTerm>] solar_terms その月の二十四節気
|
40
|
+
# @param [Array<Cycle::AbstractSolarTerm>] before_solar_terms 前月の二十四節気
|
41
|
+
#
|
42
|
+
# @return [Array<Cycle::AbstractSolarTerm>] その月の全ての二十四節気
|
43
|
+
#
|
44
|
+
def resolve(remainder:, solar_terms: [], before_solar_terms: [])
|
45
|
+
all_solar_terms = solar_terms.clone.each(&:clone)
|
46
|
+
|
47
|
+
return all_solar_terms if all_solar_terms.empty?
|
48
|
+
|
49
|
+
first = all_solar_terms[0].clone
|
50
|
+
|
51
|
+
return all_solar_terms if before_solar_terms.size.zero?
|
52
|
+
|
53
|
+
# 最初の二十四節気が月初日と同日であれば何もしない
|
54
|
+
return all_solar_terms if first.remainder.day == remainder.day
|
55
|
+
|
56
|
+
all_solar_terms.unshift(before_solar_terms[-1].clone)
|
57
|
+
|
58
|
+
all_solar_terms
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|