when_exe 0.4.6 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.ja.txt +8 -21
  3. data/LICENSE.txt +5 -27
  4. data/README.md +8 -63
  5. data/bin/make_ttl.rb +3 -2
  6. data/bin/make_ttl.rb.config +3 -3
  7. data/lib/when_exe.rb +8 -3
  8. data/lib/when_exe/basictypes.rb +1 -2
  9. data/lib/when_exe/calendarnote.rb +9 -5
  10. data/lib/when_exe/calendartypes.rb +4 -4
  11. data/lib/when_exe/coordinates.rb +14 -18
  12. data/lib/when_exe/ephemeris.rb +5 -6
  13. data/lib/when_exe/events.rb +7 -7
  14. data/lib/when_exe/google_api.rb +26 -31
  15. data/lib/when_exe/icalendar.rb +8 -8
  16. data/lib/when_exe/inspect.rb +3 -3
  17. data/lib/when_exe/linkeddata.rb +10 -2
  18. data/lib/when_exe/locales/locale.rb +2 -2
  19. data/lib/when_exe/parts/enumerator.rb +3 -3
  20. data/lib/when_exe/parts/geometric_complex.rb +2 -2
  21. data/lib/when_exe/parts/resource.rb +2 -2
  22. data/lib/when_exe/parts/timezone.rb +17 -29
  23. data/lib/when_exe/region/balinese.rb +5 -3
  24. data/lib/when_exe/region/chinese.rb +25 -3
  25. data/lib/when_exe/region/chinese/twins.rb +128 -5
  26. data/lib/when_exe/region/dee.rb +4 -4
  27. data/lib/when_exe/region/geologicalage.rb +137 -126
  28. data/lib/when_exe/region/hanke_henry.rb +4 -4
  29. data/lib/when_exe/region/indian.rb +73 -4
  30. data/lib/when_exe/region/international_fixed.rb +3 -3
  31. data/lib/when_exe/region/japanese.rb +9 -5
  32. data/lib/when_exe/region/japanese/epochs.rb +8 -4
  33. data/lib/when_exe/region/japanese/notes.rb +25 -7
  34. data/lib/when_exe/region/japanese/residues.rb +32 -10
  35. data/lib/when_exe/region/japanese/weeks.rb +7 -7
  36. data/lib/when_exe/region/korean.rb +17 -17
  37. data/lib/when_exe/region/saudi_arabian.rb +57 -0
  38. data/lib/when_exe/region/world.rb +3 -3
  39. data/lib/when_exe/timestandard.rb +7 -5
  40. data/lib/when_exe/tmobjects.rb +2 -2
  41. data/lib/when_exe/tmposition.rb +6 -4
  42. data/lib/when_exe/tmreference.rb +3 -3
  43. data/lib/when_exe/version.rb +3 -3
  44. data/test/events/example-datasets +0 -1
  45. data/test/events/japanese-holiday.csv +23 -6
  46. data/test/events/japanese-holiday.ttl +321 -151
  47. data/test/test/basictypes.rb +2 -2
  48. data/test/test/calendarnote.rb +2 -2
  49. data/test/test/coordinates.rb +6 -4
  50. data/test/test/ephemeris.rb +2 -2
  51. data/test/test/google_api.rb +45 -32
  52. data/test/test/inspect.rb +2 -2
  53. data/test/test/parts.rb +5 -5
  54. data/test/test/region/christian.rb +7 -7
  55. data/test/test/region/indian.rb +14 -1
  56. data/test/test/region/islamic.rb +11 -1
  57. data/test/test/region/japanese.rb +3 -3
  58. data/test/test/region/m17n.rb +2 -2
  59. data/test/test/region/reforms.rb +2 -2
  60. data/test/test/tmposition.rb +7 -7
  61. metadata +7 -8
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2014-2015 Takashi SUGA
3
+ Copyright (C) 2014-2021 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
6
  =end
@@ -40,7 +40,7 @@ module When
40
40
  #
41
41
  HankeHenry = [CyclicTableBased, {
42
42
  'label' => 'HankeHenry::HankeHenry',
43
- 'origin_of_LSC' => 1721061,
43
+ 'origin_of_LSC' => 1721062, # 1721061(Sun) -> 1721062(Mon)
44
44
  'indices' => [
45
45
  When.Index('HankeHenry::Month'),
46
46
  When::Coordinates::DefaultDayIndex
@@ -49,8 +49,8 @@ module When
49
49
  'T' => {'Rule' =>(2000...2400).to_a.map {|year|
50
50
  [When.tm_pos(year,1,1), When.tm_pos(year,12,31)].map {|date| date.to_i % 7}.include?(3) ? 371 : 364
51
51
  }},
52
- 364 => {'Length'=>[30,30,31]*4},
53
- 371 => {'Length'=>[30,30,31]*4 +[7]}
52
+ 364 => {'Length'=>[30,30,31] * 4},
53
+ 371 => {'Length'=>[30,30,31] * 4 + [7]}
54
54
  }
55
55
  }]
56
56
  end
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2011-2015 Takashi SUGA
3
+ Copyright (C) 2011-2019 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
6
  =end
@@ -16,6 +16,7 @@ module When
16
16
  "[IndianNationalSolar=en:Indian_national_calendar, インド国定暦, 印度國定曆, era:SE=]",
17
17
  "[Nanakshahi=en:Nanakshahi_calendar, ナーナク暦=, 拿那克曆=]",
18
18
  "[RevisedBengali=en:Bengali_calendar, 改訂ベンガル暦=, 改变孟加拉曆=]",
19
+ "[VikramSamvat=en:Vikram_Samvat, ヴィクラマ暦, 维克拉姆历]",
19
20
  "[HinduSolar=en:Hindu_calendar, インド太陽暦=ja:%%<ヒンドゥー暦>, 印度陽曆=]",
20
21
  "[HinduLuniSolar=en:Hindu_calendar, インド太陰太陽暦=ja:%%<ヒンドゥー暦>, 印度陰陽曆=]",
21
22
 
@@ -619,6 +620,74 @@ module When
619
620
  }
620
621
  }]
621
622
 
623
+ #
624
+ # Vikram Sambat Solar Calendar defined by Table
625
+ #
626
+ VikramSambatSolar = [PatternTableBasedSolar, {
627
+ 'label' => 'Indian::VikramSamvat',
628
+ 'indices' => [
629
+ When.Index('Indian::SolarMonth'),
630
+ When::Coordinates::DefaultDayIndex
631
+ ],
632
+ 'origin_of_MSC' => 2002,
633
+ 'origin_of_LSC' => 2431559,
634
+ 'epoch_in_CE' => 1945,
635
+ 'before' => 'VikramSamvatSolar',
636
+ 'after' => 'VikramSamvatSolar',
637
+ 'rule_table' => %w(112210900900)
638
+ }]
639
+
640
+ #
641
+ # Vikram Samvat Solar Calendar defined by Epehmeris
642
+ #
643
+ class VikramSamvatSolar < EphemerisBased
644
+
645
+ # see https://en.wikipedia.org/wiki/Vikram_Samvat
646
+
647
+ MonthLength = [30.950, 31.429, 31.638, 31.463, 31.012, 30.428, 29.879, 29.475, 29.310, 29.457, 29.841, 30.377] # unit : day
648
+ MonthDiff = [-0.5, -1.2, -1.0, -6.6, -0.7, -0.2, 0.0, +0.5, +0.7, +8.0, +0.3, -0.1] # unit : hour
649
+ year_length = MonthLength.inject(:+)
650
+ YearLength = (1_582_237_828 - 4_320_000) / (4_320_000.0)
651
+ MonthOffset = [0.0] + (0...11).to_a.map {|i| MonthLength[0..i].inject(:+) / year_length * YearLength}
652
+ YearOffset = 2430463.78
653
+
654
+ # protected
655
+
656
+ # 月初の通日
657
+ #
658
+ # @param [Integer] m 通月
659
+ #
660
+ # @return [Integer] 月初の通日
661
+ #
662
+ def _new_month_(m)
663
+ yy, mm = m.divmod(12)
664
+ (YearOffset + (yy - 1999) * YearLength + @month_offset[mm]).floor
665
+ end
666
+
667
+ private
668
+
669
+ # オブジェクトの正規化
670
+ #
671
+ # @month_offset = 月初の日時の補正値の配列 / hour
672
+ #
673
+ def _normalize(args=[], options={})
674
+ @label ||= 'Indian::VikramSamvat'
675
+ @month_offset = (0...12).to_a.map {|mm| MonthOffset[mm] + ((
676
+ case @month_offset
677
+ when nil ; MonthDiff
678
+ when /,/ ; @month_offset.split(',').map {|offset| offset.to_f}
679
+ else ; [@month_offset.to_f] * 12
680
+ end
681
+ )[mm] || 0) / 24.0
682
+ }
683
+ @indices ||= [
684
+ When.Index('Indian::SolarMonth'),
685
+ When::Coordinates::DefaultDayIndex
686
+ ]
687
+ super
688
+ end
689
+ end
690
+
622
691
  #
623
692
  # Hindu Solar Calendar
624
693
  #
@@ -650,7 +719,7 @@ module When
650
719
  def _normalize(args=[], options={})
651
720
  @label ||= 'Indian::HinduSolar'
652
721
  @type ||= 'SBS'
653
- raise ArgumentError, "Irregal formula: #{@formula}" unless @type.upcase =~ /\A(M|SS|SB)(V|S|B|H|VZ|SZ|BZ|HZ)\z/
722
+ raise ArgumentError, "Irregal formula: #{@formula}" unless @type.upcase =~ /\A(M|SS|SB)(V|S|B|H|G|N|K|VZ|SZ|BZ|HZ|GZ|NZ|KZ)\z/
654
723
 
655
724
  @location ||= HinduLuniSolar::Location_E[$2] || HinduLuniSolar::Location_F[$1]
656
725
  @cycle_offset ||= HinduLuniSolar::CycleOffset[$1]
@@ -684,7 +753,7 @@ module When
684
753
  Location_E = {'B'=>'_co:Indian::Dacca', 'BZ'=>'_co:Indian::Dacca', 'H'=>'_co:Iranian::Tehran', 'HZ'=>'_co:Iranian::Tehran'}
685
754
  CycleOffset = {'M'=>+23.25/30, 'SS'=>0.0, 'SB'=>0.0}
686
755
  HinduStyle = {'A'=>0, 'P'=>1, 'PX'=>2}
687
- YearEpoch = {'V'=>-58,'VZ'=>-57,'S'=>78, 'SZ'=>79, 'B'=> 593, 'BZ'=>594, 'H'=> 621, 'HZ'=> 622}
756
+ YearEpoch = {'V'=>-58,'VZ'=>-57,'S'=>78, 'SZ'=>79, 'G'=>318, 'GZ'=>319, 'B'=> 593, 'BZ'=>594, 'H'=> 621, 'HZ'=> 622, 'N'=>801, 'NZ'=>802, 'K'=>824, 'KZ'=>825}
688
757
 
689
758
  # White / black month and leap month identification table
690
759
 
@@ -793,7 +862,7 @@ module When
793
862
  def _normalize(args=[], options={})
794
863
  @label ||= 'Indian::HinduLuniSolar'
795
864
  @type ||= 'SBSA'
796
- raise ArgumentError, "Irregal formula: #{@formula}" unless @type.upcase =~ /\A(M|SS|SB)(V|S|B|H|VZ|SZ|BZ|HZ)(A|P|PX)\z/
865
+ raise ArgumentError, "Irregal formula: #{@formula}" unless @type.upcase =~ /\A(M|SS|SB)(V|S|B|H|G|N|K|VZ|SZ|BZ|HZ|GZ|NZ|KZ)(A|P|PX)\z/
797
866
 
798
867
  @location ||= Location_E[$2] || Location_F[$1]
799
868
  @cycle_offset ||= CycleOffset[$1]
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2014-2015 Takashi SUGA
3
+ Copyright (C) 2014-2021 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
6
  =end
@@ -87,8 +87,8 @@ module When
87
87
  When::Coordinates::DefaultDayIndex
88
88
  ],
89
89
  'rule_table' => {
90
- 365 => {'Length'=>[28]*12 + [29]},
91
- 366 => {'Length'=>[28]* 5 + [29] + [28] *6 + [29]}
90
+ 365 => {'Length'=>[28] * 12 + [29]},
91
+ 366 => {'Length'=>[28] * 5 + [29] + [28] * 6 + [29]}
92
92
  },
93
93
  'note' => 'InternationalFixedWeek'
94
94
  }]
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2011-2016 Takashi SUGA
3
+ Copyright (C) 2011-2019 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
6
  =end
@@ -107,6 +107,8 @@ module When
107
107
  "[天皇誕生日, The Emperor's Birthday ]",
108
108
  "[みどりの日, Greenery Day ]",
109
109
  "[昭和の日, Shōwa Day ]",
110
+ "[退位の日=, Day of Abdication=]",
111
+ "[即位の日=, Coronation Day of the new Emperor=]",
110
112
  "[憲法記念日, Constitution Memorial Day ]",
111
113
  "[こどもの日, Children's Day (Japan) ]",
112
114
  "[七夕節句=ja:%%<七夕>, Qixi Festival ]",
@@ -117,20 +119,21 @@ module When
117
119
  "[敬老の日, Respect for the Aged Day ]",
118
120
  "[神嘗祭, Kan'namesai= ]",
119
121
  "[体育の日, Health and Sports Day ]",
122
+ "[スポーツの日, Sports Day ]",
120
123
  "[春季皇霊祭, Vernal Kōreisai=en:K%C5%8Dreisai ]",
121
124
  "[春分の日, Vernal Equinox Day ]",
122
125
  "[秋季皇霊祭, Autumnal Kōreisai=en:K%C5%8Dreisai ]",
123
126
  "[秋分の日, Autumnal Equinox Day ]",
124
127
  "[明治節, The emperor Maiji's Birthday=en:Culture_Day]",
125
128
  "[文化の日, Culture Day ]",
126
- "[大嘗祭, Enthronement of the Japanese Emperor ]",
127
- "[大饗第1日, Enthronement of the Japanese Emperor ]",
129
+ "[大嘗祭, Enthronement of the Japanese Emperor= ]",
130
+ "[大饗第1日, Enthronement of the Japanese Emperor= ]",
128
131
  "[新嘗祭, Labor Thanksgiving Day ]",
129
132
  "[勤労感謝の日, Labor Thanksgiving Day ]",
130
133
  "[振替休日, Substitute holiday ]",
131
134
  "[国民の休日, National Day Off= ]",
132
- "[即位の礼, Enthronement of the Japanese Emperor ]",
133
- "[即位の礼正殿の儀, Enthronement of the Japanese Emperor ]",
135
+ "[即位の礼, Enthronement of the Japanese Emperor= ]",
136
+ "[即位礼正殿の儀, Enthronement of the Japanese Emperor=]",
134
137
  "[神武天皇祭, EmperorJimmu's Death anniversary= ]",
135
138
  "[孝明天皇祭=ja:%%<先帝祭>, Emperor Kōmei's Death anniversary= ]",
136
139
  "[明治天皇祭=ja:%%<先帝祭>, Emperor Meiji's Death anniversary= ]",
@@ -139,6 +142,7 @@ module When
139
142
  "[弥生節句=ja:%%<上巳>, Double Third Festival= ]",
140
143
  "[端午節句=ja:%%<端午>, Double Fifth Festival= ]",
141
144
  "[田実節句=ja:%%<八朔>, Hassaku= ]",
145
+ "[皇大神宮遷御当日=ja:%%<神宮式年遷宮>, Rebuilding the Ise Grand Shrine= ]",
142
146
  "[皇太子明仁親王の結婚の儀=ja:%%<結婚の儀>, Prince Akihito's wedding= ]",
143
147
  "[皇太子徳仁親王の結婚の儀=ja:%%<結婚の儀>, Prince Naruhito's wedding= ]",
144
148
  "[天長節祝日=ja:%%<天皇誕生日>#%.<近世・現代>, Emperor Taishō's Birth holiday= ]",
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2011-2015 Takashi SUGA
3
+ Copyright (C) 2011-2021 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
6
  =end
@@ -335,7 +335,9 @@ module When
335
335
  ["[昭和,Shōwa=en:Sh%C5%8Dwa_period,S]1.12.25", "@A",
336
336
  "name=[昭和天皇,Emperor_Shōwa];1926-12-25"],
337
337
  ["[平成,Heisei=en:Heisei_period,H]1.01.08", "@A",
338
- "name=[今上天皇=ja:%%<明仁>,Emperor_Kinjō=en:Akihito];1989-01-08"]
338
+ "name=[上皇明仁,Emperor_Emeritus_of_Japan=en:Akihito];1989-01-08"],
339
+ ["[令和,Reiwa,R]1.05.01", "@A",
340
+ "name=[今上天皇=ja:%%<徳仁>,Emperor_Kinjō=en:Naruhito];2019-05-01"]
339
341
  ]]
340
342
 
341
343
  #
@@ -403,7 +405,7 @@ module When
403
405
  ["[鈴木善幸]1.07.17", "@A", "1980-07-17"],
404
406
  ["[中曽根康弘]1.11.27", "@A", "1982-11-27"],
405
407
  ["[竹下登]1.11.06", "@A", "1987-11-06",
406
- "name=[今上天皇=ja:%%<明仁>,Emperor_Kinjō=en:Akihito];1989-01-08", ""],
408
+ "name=[上皇明仁,Emperor_Emeritus_of_Japan=en:Akihito];1989-01-08", ""],
407
409
  ["[宇野宗佑]1.06.03", "@A", "1989-06-03"],
408
410
  ["[海部俊樹]1.08.10", "@A", "1989-08-10"],
409
411
  ["[宮沢喜一]1.11.05", "@A", "1991-11-05"],
@@ -420,7 +422,9 @@ module When
420
422
  ["[鳩山由紀夫]1.09.16", "@A", "2009-09-16"],
421
423
  ["[菅直人]1.06.08", "@A", "2010-06-08"],
422
424
  ["[野田佳彦]1.09.02", "@A", "2011-09-02"],
423
- ["[安倍晋三・再=ja:%%<安倍晋三>]1.12.26", "@A", "2012-12-26"]
425
+ ["[安倍晋三・再=ja:%%<安倍晋三>]1.12.26", "@A", "2012-12-26",
426
+ "name=[今上天皇=ja:%%<徳仁>,Emperor_Kinjō=en:Naruhito];2019-05-01", ""],
427
+ ["[菅義偉]1.09.16", "@A", "2020-09-16"]
424
428
  ]]
425
429
  end
426
430
  end
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2012-2016 Takashi SUGA
3
+ Copyright (C) 2012-2021 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
6
  =end
@@ -798,6 +798,7 @@ class When::CalendarNote
798
798
  [ 1,29] => [[1873..1873, When.M17n('JapaneseHoliday::神武天皇即位日')]],
799
799
  [ 1,30] => [[1874..1912, When.M17n('JapaneseHoliday::孝明天皇祭')]],
800
800
  [ 2,11] => [[1874..1948, When.M17n('JapaneseHoliday::紀元節')], [1967..2100, When.M17n('JapaneseHoliday::建国記念の日')]],
801
+ [ 2,23] => [[2020..2100, When.M17n('JapaneseHoliday::天皇誕生日')]],
801
802
  [ 2,24] => [[1989..1989, When.M17n('JapaneseHoliday::昭和天皇の大喪の礼')]],
802
803
  [ 3, 3] => [[1868..1872, When.M17n('JapaneseHoliday::弥生節句')]],
803
804
  [ 3, 0] => [[1879..1948, When.M17n('JapaneseHoliday::春季皇霊祭')], [1949..2100, When.M17n('JapaneseHoliday::春分の日')]],
@@ -805,6 +806,7 @@ class When::CalendarNote
805
806
  [ 4,10] => [[1959..1959, When.M17n('JapaneseHoliday::皇太子明仁親王の結婚の儀')]],
806
807
  [ 4,29] => [[1927..1948, When.M17n('JapaneseHoliday::天長節')], [1949..1988, When.M17n('JapaneseHoliday::天皇誕生日')],
807
808
  [1989..2006, When.M17n('JapaneseHoliday::みどりの日')], [2007..2100, When.M17n('JapaneseHoliday::昭和の日')]],
809
+ [ 5, 1] => [[2019..2019, When.M17n('JapaneseHoliday::即位の日')]],
808
810
  [ 5, 3] => [[1949..2100, When.M17n('JapaneseHoliday::憲法記念日')]],
809
811
  [ 5, 4] => [[2007..2100, When.M17n('JapaneseHoliday::みどりの日')]],
810
812
  [ 5, 5] => [[1868..1872, When.M17n('JapaneseHoliday::端午節句')], [1949..2100, When.M17n('JapaneseHoliday::こどもの日')]],
@@ -812,28 +814,35 @@ class When::CalendarNote
812
814
  [ 7, 7] => [[1868..1872, When.M17n('JapaneseHoliday::七夕節句')]],
813
815
  [ 7,15] => [[1868..1872, When.M17n('JapaneseHoliday::お盆')]],
814
816
  [ 7,20] => [[1996..2002, When.M17n('JapaneseHoliday::海の日')]],
815
- [ 7,-3] => [[2003..2100, When.M17n('JapaneseHoliday::海の日')]],
817
+ [ 7,22] => [[2021..2021, When.M17n('JapaneseHoliday::海の日')]],
818
+ [ 7,23] => [[2020..2020, When.M17n('JapaneseHoliday::海の日')],[2021..2021, When.M17n('JapaneseHoliday::スポーツの日')]],
819
+ [ 7,-3] => [[2003..2019, When.M17n('JapaneseHoliday::海の日')],[2022..2100, When.M17n('JapaneseHoliday::海の日')]],
820
+ [ 7,24] => [[2020..2020, When.M17n('JapaneseHoliday::スポーツの日')]],
816
821
  [ 7,30] => [[1913..1926, When.M17n('JapaneseHoliday::明治天皇祭')]],
817
822
  [ 8, 1] => [[1868..1872, When.M17n('JapaneseHoliday::田実節句')]],
818
- [ 8,11] => [[2016..2100, When.M17n('JapaneseHoliday::山の日')]],
823
+ [ 8, 8] => [[2021..2021, When.M17n('JapaneseHoliday::山の日')]],
824
+ [ 8,10] => [[2020..2020, When.M17n('JapaneseHoliday::山の日')]],
825
+ [ 8,11] => [[2016..2019, When.M17n('JapaneseHoliday::山の日')],[2022..2100, When.M17n('JapaneseHoliday::山の日')]],
819
826
  [ 8,31] => [[1913..1926, When.M17n('JapaneseHoliday::天長節')]],
820
827
  [ 9, 9] => [[1868..1872, When.M17n('JapaneseHoliday::重陽節句')]],
821
828
  [ 9,15] => [[1966..2002, When.M17n('JapaneseHoliday::敬老の日')]],
822
829
  [ 9,-3] => [[2003..2100, When.M17n('JapaneseHoliday::敬老の日')]],
823
830
  [ 9,17] => [[1874..1878, When.M17n('JapaneseHoliday::神嘗祭')]],
824
831
  [ 9, 0] => [[1878..1947, When.M17n('JapaneseHoliday::秋季皇霊祭')], [1948..2100, When.M17n('JapaneseHoliday::秋分の日')]],
832
+ [10, 2] => [[1929..1929, When.M17n('JapaneseHoliday::皇大神宮遷御当日')]],
825
833
  [10,10] => [[1966..1999, When.M17n('JapaneseHoliday::体育の日')]],
826
- [10,-2] => [[2000..2100, When.M17n('JapaneseHoliday::体育の日')]],
834
+ [10,-2] => [[2000..2019, When.M17n('JapaneseHoliday::体育の日')],[2022..2100, When.M17n('JapaneseHoliday::スポーツの日')]],
827
835
  [10,17] => [[1879..1947, When.M17n('JapaneseHoliday::神嘗祭')]],
836
+ [10,22] => [[2019..2019, When.M17n('JapaneseHoliday::即位礼正殿の儀')]],
828
837
  [10,31] => [[1913..1926, When.M17n('JapaneseHoliday::天長節祝日')]],
829
838
  [11, 3] => [[1873..1911, When.M17n('JapaneseHoliday::天長節')], [1927..1947, When.M17n('JapaneseHoliday::明治節')],
830
839
  [1948..2100, When.M17n('JapaneseHoliday::文化の日')]],
831
840
  [11,10] => [[1915..1915, When.M17n('JapaneseHoliday::即位の礼')], [1928..1928, When.M17n('JapaneseHoliday::即位の礼')]],
832
- [11,12] => [[1990..1990, When.M17n('JapaneseHoliday::即位の礼正殿の儀')]],
841
+ [11,12] => [[1990..1990, When.M17n('JapaneseHoliday::即位礼正殿の儀')]],
833
842
  [11,14] => [[1915..1915, When.M17n('JapaneseHoliday::大嘗祭')], [1928..1928, When.M17n('JapaneseHoliday::大嘗祭')]],
834
843
  [11,16] => [[1915..1915, When.M17n('JapaneseHoliday::大饗第1日')], [1928..1928, When.M17n('JapaneseHoliday::大饗第1日')]],
835
844
  [11,23] => [[1873..1947, When.M17n('JapaneseHoliday::新嘗祭')], [1948..2100, When.M17n('JapaneseHoliday::勤労感謝の日')]],
836
- [12,23] => [[1989..2100, When.M17n('JapaneseHoliday::天皇誕生日')]],
845
+ [12,23] => [[1989..2018, When.M17n('JapaneseHoliday::天皇誕生日')]],
837
846
  [12,25] => [[1927..1947, When.M17n('JapaneseHoliday::大正天皇祭')]]
838
847
  }
839
848
 
@@ -1274,7 +1283,16 @@ class When::CalendarNote
1274
1283
  2397584 => [ 16.0, 0], # 嘉永05(1852).02=16 [ 15.0, 1] 清明 (計算誤差の補正)
1275
1284
 
1276
1285
  2451110 => [210.0, 1], # 平成10(1998).10.23 [209.0, 0] 没
1277
- 2451111 => [211.0, 0] # 平成10(1998).10.24 [210.0, 1] 霜降 (計算誤差の補正)
1286
+ 2451111 => [211.0, 0], # 平成10(1998).10.24 [210.0, 1] 霜降 (計算誤差の補正)
1287
+
1288
+ 2459950 => [284.0, 0], # 令和05(2023).01.05 [285.0, 1] 小寒 (計算誤差の補正)
1289
+ 2459951 => [285.0, 1], # 令和05(2023).01.06 [285.0, 0] 没
1290
+
1291
+ 2460651 => [254.0, 0], # 令和06(2024).12.06 [255.0, 1] 大雪 (計算誤差の補正)
1292
+ 2460652 => [255.0, 1], # 令和06(2024).12.07 [255.0, 0] 没
1293
+
1294
+ 2461031 => [269.0, 0], # 令和07(2025).12.21 [270.0, 1] 冬至 (計算誤差の補正)
1295
+ 2461032 => [270.0, 1] # 令和07(2025).12.22 [270.0, 0] 没
1278
1296
  }
1279
1297
 
1280
1298
  class << self
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2012-2014 Takashi SUGA
3
+ Copyright (C) 2012-2016 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
6
  =end
@@ -14,6 +14,8 @@ module When::Coordinates
14
14
 
15
15
  StartOfSequence = {-1=>'九星陽遁始め', +1=>'九星陰遁始め'}
16
16
 
17
+ Patch = {2421371=>2421431, 2429771=>2429831, 2463251=>2463191, 2475851=>2475791}
18
+
17
19
  class << self
18
20
 
19
21
  #
@@ -48,6 +50,7 @@ module When::Coordinates
48
50
  #
49
51
  def day(date, s_terms)
50
52
  thres, delta, sign = _parameters(date, s_terms)
53
+ delta += 3 if thres == 30
51
54
  delta = 8 - delta if sign < 0
52
55
  return delta % 9
53
56
  end
@@ -79,15 +82,34 @@ module When::Coordinates
79
82
  def _parameters(date, s_terms)
80
83
  date = When.when?(date.to_cal_date.to_s, {:frame=>date.frame, :clock=>date.frame.time_basis})
81
84
 
82
- [+90,-90,-270].each do |deg|
83
- prev = s_terms.term(date, [deg,180]) # 直後および直前の冬至または夏至
84
- sign = s_terms.position(prev)[0] == 270 ? -1 : +1 # 陽遁か?(冬至:-1, 夏至:+1)
85
- base = prev.to_i # 当該の冬至または夏至のユリウス日
86
- kanshi = (base + 17) % 60 - 28 # 最も近い甲子との日数差
87
- base -= kanshi # 当該陰陽遁の始め
88
- delta = date.to_i - base # 始めからの日数
89
- thres = kanshi >= 29 ? 30 : 0 # 区間の始めの delta (甲午の前後1日以内は甲午折り返し)
90
- return [thres, delta, sign] if thres <= delta # 区間に入れば確定
85
+ bases = [+450,+270,+90,-90,-270,-450].map { |deg|
86
+ prev = s_terms.term(date, [deg,180]) # 直後および直前の冬至または夏至
87
+ sign = s_terms.position(prev)[0] == 270 ? -1 : +1 # 陽遁か?(冬至:-1, 夏至:+1)
88
+ base = prev.to_i # 当該の冬至または夏至のユリウス日
89
+ kanshi = (base + 17) % 60 - 28 # 最も近い甲子との日数差
90
+ base -= kanshi # 当該陰陽遁の始めの甲子
91
+ [(Patch[base] || base), sign] # 『暦日大鑑』に合わせる
92
+ }
93
+
94
+ (1...bases.size).each do |i| # 区間が短くなりすぎる場合は次と繋げる
95
+ next unless bases[i-1][0] - bases[i][0] == 120
96
+ bases[i-1][0] += 60
97
+ break
98
+ end
99
+
100
+ bases.size.times do |i|
101
+ base, sign = bases[i]
102
+ delta = date.to_i - base # 始めからの日数
103
+ next if delta < 0
104
+ case (bases[i-1][0] - base)
105
+ when 180
106
+ return [ 0, delta, sign] # 通常
107
+ when 240
108
+ return [30, delta, sign] if delta >= 30 # 甲午以降
109
+ return [ 0, delta+180, -sign] # 甲午より前
110
+ else
111
+ raise ArgumentError, "Invalid solstice interval: #{bases[i-1][0] - base}"
112
+ end
91
113
  end
92
114
  raise ArgumentError, "can't find any solstice."
93
115
  end
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2014 Takashi SUGA
3
+ Copyright (C) 2014-2017 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
6
  =end
@@ -29,12 +29,12 @@ class When::CalendarNote
29
29
  "names:[day]",
30
30
  [When::BasicTypes::M17n,
31
31
  "names:[Rokuyo=, 六曜, 六曜=zh:%%<六曜>]",
32
- [DayOfWeek, "label:[Taian=, *大安, 大安]", {'delta'=>6}],
33
- [DayOfWeek, "label:[Shakko=, *赤口, 赤口]", {'delta'=>6}],
34
- [DayOfWeek, "label:[Sensho=, *先勝, 先勝]", {'delta'=>6}],
35
- [DayOfWeek, "label:[Tomobiki=, *友引, 友引]", {'delta'=>6}],
36
- [DayOfWeek, "label:[Sembu=, *先負, 先負]", {'delta'=>6}],
37
- [DayOfWeek, "label:[Butsumetsu=, *仏滅, 仏滅]", {'delta'=>6}]
32
+ [DayOfWeek, "label:[Taian=, *大安=ja:%%<六曜>#%.<大安>, 大安=ja:%%<六曜>#%.<大安>]", {'delta'=>6}],
33
+ [DayOfWeek, "label:[Shakko=, *赤口=ja:%%<六曜>#%.<赤口>, 赤口=ja:%%<六曜>#%.<赤口>]", {'delta'=>6}],
34
+ [DayOfWeek, "label:[Sensho=, *先勝=ja:%%<六曜>#%.<先勝>, 先勝=ja:%%<六曜>#%.<先勝>]", {'delta'=>6}],
35
+ [DayOfWeek, "label:[Tomobiki=, *友引=ja:%%<六曜>#%.<友引>, 友引=ja:%%<六曜>#%.<友引>]", {'delta'=>6}],
36
+ [DayOfWeek, "label:[Sembu=, *先負=ja:%%<六曜>#%.<先負>, 先負=ja:%%<六曜>#%.<先負>]", {'delta'=>6}],
37
+ [DayOfWeek, "label:[Butsumetsu=, *仏滅=ja:%%<六曜>#%.<仏滅>, 仏滅=zh:%%<佛滅日>]", {'delta'=>6}]
38
38
  ]
39
39
  ]
40
40
  ]]
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2013-2014 Takashi SUGA
3
+ Copyright (C) 2013-2021 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
6
  =end
@@ -35,22 +35,22 @@ module When
35
35
  # #- は『韓國年暦大典』(1987年版)の中国-朝鮮差分が取り消されたもの
36
36
  # #! は全勇勳「朝鮮における時憲曆の受容過程とその思想的背景」で言及された年(最終的には差分でない)
37
37
 
38
- Korean = PatternTableBasedLuniSolar.join([
39
- PatternTableBasedLuniSolar,
40
- {
41
- 'indices'=> ChineseIndices,
42
- 'before' => 'ChineseTwin::太初暦',
43
- 'after' => 'ChineseLuniSolar?time_basis=+09',
44
- 'note' => 'Chinese',
45
- },
46
- ['Chinese_103', -60.. 263], # 前漢~蜀漢(太初暦・四分暦)
47
- ['Chinese0239', 264.. 444], # 三国・南朝(景初暦)
48
- ['Chinese0445', 445.. 589], # 南朝(元嘉暦・大明暦)
49
- ['Chinese0523', 590.. 946], # 隋・唐~五代前期(大業暦~調元暦)
50
- ['Chinese0956', 947..1279], # 五代後期~南宋(調元暦~本天暦)
51
- ['Chinese0939', 1280..1653], # 元・明・南明(重修大明暦・授時暦・大統暦)
52
- ['Chinese1645', 1654..1911]], # 清(時憲暦)
53
- {
38
+ Korean = PatternTableBasedLuniSolar.join([
39
+ PatternTableBasedLuniSolar,
40
+ {
41
+ 'indices'=> ChineseIndices,
42
+ 'before' => 'ChineseTwin::太初暦',
43
+ 'after' => 'ChineseLuniSolar?time_basis=+09',
44
+ 'note' => 'Chinese',
45
+ },
46
+ ['Chinese_103', -60.. 263], # 前漢~蜀漢(太初暦・四分暦)
47
+ ['Chinese0239', 264.. 444], # 三国・南朝(景初暦)
48
+ ['Chinese0445', 445.. 589], # 南朝(元嘉暦・大明暦)
49
+ ['Chinese0523', 590.. 946], # 隋・唐~五代前期(大業暦~調元暦)
50
+ ['Chinese0956', 947..1279], # 五代後期~南宋(調元暦~本天暦)
51
+ ['Chinese0939', 1280..1653], # 元・明・南明(重修大明暦・授時暦・大統暦)
52
+ ['Chinese1645', 1654..1911]], # 清(時憲暦)
53
+ {
54
54
  -26 => {'aB' => 'Ab' }, # ベースとする中国暦日表の違い
55
55
  240 => {'Hi' => 'hI' }, # 四分・景初・乾象暦いずれにも不一致
56
56