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
         
     |