when_exe 0.4.6 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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