when_exe 0.3.5 → 0.3.6

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 (194) hide show
  1. data/bin/irb.rc +1 -0
  2. data/bin/locales.rb +8 -6
  3. data/bin/when.rb +1 -1
  4. data/lib/when_exe.rb +231 -146
  5. data/lib/when_exe/basictypes.rb +108 -18
  6. data/lib/when_exe/calendarnote.rb +263 -116
  7. data/lib/when_exe/calendartypes.rb +413 -22
  8. data/lib/when_exe/coordinates.rb +58 -36
  9. data/lib/when_exe/core/compatibility.rb +8 -6
  10. data/lib/when_exe/core/extension.rb +40 -15
  11. data/lib/when_exe/ephemeris.rb +20 -19
  12. data/lib/when_exe/{region → ephemeris}/moon.rb +4 -4
  13. data/lib/when_exe/{region/ephemeric_notes.rb → ephemeris/notes.rb} +25 -6
  14. data/lib/when_exe/{region → ephemeris}/planets.rb +0 -0
  15. data/lib/when_exe/{region → ephemeris}/sun.rb +7 -3
  16. data/lib/when_exe/{region → ephemeris}/v50.rb +0 -0
  17. data/lib/when_exe/googlecalendar.rb +2 -2
  18. data/lib/when_exe/icalendar.rb +3 -3
  19. data/lib/when_exe/inspect.rb +130 -70
  20. data/lib/when_exe/locales/af.rb +2 -2
  21. data/lib/when_exe/locales/akt.rb +176 -0
  22. data/lib/when_exe/locales/ar.rb +2 -2
  23. data/lib/when_exe/locales/{locales.rb → autoload.rb} +6 -2
  24. data/lib/when_exe/locales/az.rb +2 -2
  25. data/lib/when_exe/locales/bg.rb +2 -2
  26. data/lib/when_exe/locales/bn.rb +2 -2
  27. data/lib/when_exe/locales/bs.rb +2 -2
  28. data/lib/when_exe/locales/ca.rb +2 -2
  29. data/lib/when_exe/locales/cs.rb +2 -2
  30. data/lib/when_exe/locales/cy.rb +2 -2
  31. data/lib/when_exe/locales/da.rb +2 -2
  32. data/lib/when_exe/locales/de.rb +2 -2
  33. data/lib/when_exe/locales/de_AT.rb +2 -2
  34. data/lib/when_exe/locales/de_CH.rb +2 -2
  35. data/lib/when_exe/locales/el.rb +2 -2
  36. data/lib/when_exe/locales/en.rb +2 -2
  37. data/lib/when_exe/locales/en_AU.rb +2 -2
  38. data/lib/when_exe/locales/en_CA.rb +2 -2
  39. data/lib/when_exe/locales/en_GB.rb +2 -2
  40. data/lib/when_exe/locales/en_IE.rb +2 -2
  41. data/lib/when_exe/locales/en_IN.rb +3 -3
  42. data/lib/when_exe/locales/en_NZ.rb +2 -2
  43. data/lib/when_exe/locales/en_US.rb +2 -2
  44. data/lib/when_exe/locales/en_ZA.rb +88 -0
  45. data/lib/when_exe/locales/encoding_conversion.rb +126 -0
  46. data/lib/when_exe/locales/eo.rb +2 -2
  47. data/lib/when_exe/locales/es.rb +2 -2
  48. data/lib/when_exe/locales/es_419.rb +2 -2
  49. data/lib/when_exe/locales/es_AR.rb +2 -2
  50. data/lib/when_exe/locales/es_CL.rb +2 -2
  51. data/lib/when_exe/locales/es_CO.rb +2 -2
  52. data/lib/when_exe/locales/es_CR.rb +2 -2
  53. data/lib/when_exe/locales/es_EC.rb +2 -2
  54. data/lib/when_exe/locales/es_MX.rb +2 -2
  55. data/lib/when_exe/locales/es_PA.rb +2 -2
  56. data/lib/when_exe/locales/es_PE.rb +2 -2
  57. data/lib/when_exe/locales/es_US.rb +84 -0
  58. data/lib/when_exe/locales/es_VE.rb +2 -2
  59. data/lib/when_exe/locales/et.rb +2 -2
  60. data/lib/when_exe/locales/eu.rb +2 -2
  61. data/lib/when_exe/locales/fa.rb +2 -2
  62. data/lib/when_exe/locales/fi.rb +3 -3
  63. data/lib/when_exe/locales/fr.rb +2 -2
  64. data/lib/when_exe/locales/fr_CA.rb +2 -2
  65. data/lib/when_exe/locales/fr_CH.rb +2 -2
  66. data/lib/when_exe/locales/gl.rb +2 -2
  67. data/lib/when_exe/locales/he.rb +3 -3
  68. data/lib/when_exe/locales/hi.rb +2 -2
  69. data/lib/when_exe/locales/hi_IN.rb +2 -2
  70. data/lib/when_exe/locales/hr.rb +2 -2
  71. data/lib/when_exe/locales/hu.rb +6 -5
  72. data/lib/when_exe/locales/iast.rb +90 -0
  73. data/lib/when_exe/locales/id.rb +2 -2
  74. data/lib/when_exe/locales/is.rb +2 -2
  75. data/lib/when_exe/locales/it.rb +2 -2
  76. data/lib/when_exe/locales/it_CH.rb +2 -2
  77. data/lib/when_exe/locales/ja.rb +2 -2
  78. data/lib/when_exe/locales/kn.rb +2 -2
  79. data/lib/when_exe/locales/ko.rb +2 -2
  80. data/lib/when_exe/locales/links.rb +3 -3
  81. data/lib/when_exe/locales/lo.rb +2 -2
  82. data/lib/when_exe/{parts → locales}/locale.rb +77 -49
  83. data/lib/when_exe/locales/lt.rb +6 -2
  84. data/lib/when_exe/locales/lv.rb +2 -2
  85. data/lib/when_exe/locales/mk.rb +2 -2
  86. data/lib/when_exe/locales/mn.rb +2 -2
  87. data/lib/when_exe/locales/ms.rb +2 -2
  88. data/lib/when_exe/locales/nb.rb +2 -2
  89. data/lib/when_exe/locales/ne.rb +2 -2
  90. data/lib/when_exe/locales/nl.rb +2 -2
  91. data/lib/when_exe/locales/nn.rb +2 -2
  92. data/lib/when_exe/locales/or.rb +2 -2
  93. data/lib/when_exe/locales/pl.rb +2 -2
  94. data/lib/when_exe/locales/pt.rb +2 -2
  95. data/lib/when_exe/locales/pt_BR.rb +2 -2
  96. data/lib/when_exe/locales/rm.rb +2 -2
  97. data/lib/when_exe/locales/ro.rb +2 -2
  98. data/lib/when_exe/locales/ru.rb +2 -2
  99. data/lib/when_exe/locales/sk.rb +2 -2
  100. data/lib/when_exe/locales/sl.rb +2 -2
  101. data/lib/when_exe/locales/sr.rb +2 -2
  102. data/lib/when_exe/locales/sv.rb +2 -2
  103. data/lib/when_exe/locales/sw.rb +2 -2
  104. data/lib/when_exe/locales/ta.rb +95 -0
  105. data/lib/when_exe/locales/th.rb +2 -2
  106. data/lib/when_exe/locales/tl.rb +3 -3
  107. data/lib/when_exe/locales/tr.rb +2 -2
  108. data/lib/when_exe/locales/transliteration_table.rb +62 -0
  109. data/lib/when_exe/locales/uk.rb +15 -15
  110. data/lib/when_exe/locales/ur.rb +2 -2
  111. data/lib/when_exe/locales/uz.rb +2 -2
  112. data/lib/when_exe/locales/vi.rb +2 -2
  113. data/lib/when_exe/locales/wo.rb +2 -2
  114. data/lib/when_exe/locales/zh_CN.rb +2 -2
  115. data/lib/when_exe/locales/zh_HK.rb +15 -15
  116. data/lib/when_exe/locales/zh_TW.rb +2 -2
  117. data/lib/when_exe/locales/zh_YUE.rb +77 -0
  118. data/lib/when_exe/mini_application.rb +22 -12
  119. data/lib/when_exe/parts/geometric_complex.rb +16 -1
  120. data/lib/when_exe/parts/method_cash.rb +184 -238
  121. data/lib/when_exe/parts/resource.rb +65 -16
  122. data/lib/when_exe/region/armenian.rb +56 -0
  123. data/lib/when_exe/region/bahai.rb +13 -13
  124. data/lib/when_exe/region/balinese.rb +33 -35
  125. data/lib/when_exe/region/chinese.rb +82 -78
  126. data/lib/when_exe/region/{chinese_calendar.rb → chinese/calendars.rb} +59 -40
  127. data/lib/when_exe/region/{chinese_epoch.rb → chinese/epochs.rb} +3 -4
  128. data/lib/when_exe/region/{chinese_twin.rb → chinese/twins.rb} +48 -51
  129. data/lib/when_exe/region/christian.rb +236 -127
  130. data/lib/when_exe/region/coptic.rb +9 -10
  131. data/lib/when_exe/region/dee.rb +48 -0
  132. data/lib/when_exe/region/discordian.rb +225 -0
  133. data/lib/when_exe/region/far_east.rb +2 -6
  134. data/lib/when_exe/region/french.rb +7 -17
  135. data/lib/when_exe/region/geologicalage.rb +0 -1
  136. data/lib/when_exe/region/goddess.rb +58 -0
  137. data/lib/when_exe/region/indian.rb +323 -231
  138. data/lib/when_exe/region/iranian.rb +159 -22
  139. data/lib/when_exe/region/islamic.rb +7 -9
  140. data/lib/when_exe/region/japanese.rb +14 -803
  141. data/lib/when_exe/region/japanese/calendars.rb +397 -0
  142. data/lib/when_exe/region/japanese/epochs.rb +426 -0
  143. data/lib/when_exe/region/{nihon_shoki.rb → japanese/nihon_shoki.rb} +0 -2
  144. data/lib/when_exe/region/{japanese_notes.rb → japanese/notes.rb} +179 -150
  145. data/lib/when_exe/region/japanese/residues.rb +1306 -0
  146. data/lib/when_exe/region/{japanese_twin.rb → japanese/twins.rb} +12 -15
  147. data/lib/when_exe/region/javanese.rb +16 -14
  148. data/lib/when_exe/region/jewish.rb +8 -9
  149. data/lib/when_exe/region/korean.rb +146 -35
  150. data/lib/when_exe/region/m17n.rb +8 -10
  151. data/lib/when_exe/region/martian.rb +44 -16
  152. data/lib/when_exe/region/mayan.rb +12 -10
  153. data/lib/when_exe/region/pope.rb +0 -1
  154. data/lib/when_exe/region/residue.rb +4 -5
  155. data/lib/when_exe/region/roman.rb +20 -24
  156. data/lib/when_exe/region/ryukyu.rb +3 -4
  157. data/lib/when_exe/region/shire.rb +97 -94
  158. data/lib/when_exe/region/symmetry.rb +50 -0
  159. data/lib/when_exe/region/thai.rb +164 -56
  160. data/lib/when_exe/region/tibetan.rb +86 -86
  161. data/lib/when_exe/region/vietnamese.rb +9 -12
  162. data/lib/when_exe/region/weekdate.rb +80 -0
  163. data/lib/when_exe/region/world.rb +65 -70
  164. data/lib/when_exe/region/yerm.rb +98 -0
  165. data/lib/when_exe/region/zoroastrian.rb +203 -0
  166. data/lib/when_exe/timestandard.rb +4 -4
  167. data/lib/when_exe/tmobjects.rb +1 -3
  168. data/lib/when_exe/tmposition.rb +13 -12
  169. data/lib/when_exe/tmreference.rb +11 -10
  170. data/lib/when_exe/version.rb +1 -1
  171. data/link_to_online_documents +3 -3
  172. data/test/examples/Residue.m17n +1 -1
  173. data/test/examples/Terms.m17n +1 -1
  174. data/test/test.rb +2 -1
  175. data/test/test/basictypes.rb +18 -2
  176. data/test/test/calendarnote.rb +1 -1
  177. data/test/test/calendartypes.rb +1 -1
  178. data/test/test/coordinates.rb +7 -7
  179. data/test/test/{region → ephemeris}/moon.rb +0 -0
  180. data/test/test/{region → ephemeris}/planets.rb +0 -0
  181. data/test/test/{region → ephemeris}/sun.rb +0 -0
  182. data/test/test/parts.rb +8 -13
  183. data/test/test/region/christian.rb +245 -0
  184. data/test/test/region/french.rb +16 -16
  185. data/test/test/region/iran.rb +34 -34
  186. data/test/test/region/japanese.rb +6 -4
  187. data/test/test/region/m17n.rb +8 -7
  188. data/test/test/region/mayan.rb +12 -12
  189. data/test/test/region/residue.rb +20 -4
  190. data/test/test/region/thai.rb +25 -3
  191. data/test/test/region/yerm.rb +146 -0
  192. metadata +39 -20
  193. data/lib/when_exe/region/japanese_residues.rb +0 -1212
  194. data/test/test/region/civil.rb +0 -124
@@ -6,7 +6,7 @@
6
6
  =end
7
7
 
8
8
  require 'when_exe/region/chinese'
9
- require 'when_exe/region/chinese_calendar'
9
+ require 'when_exe/region/chinese/calendars'
10
10
 
11
11
  module When
12
12
  class TM::CalendarEra
@@ -15,7 +15,6 @@ module When
15
15
  # 中国の年号
16
16
  #
17
17
  Chinese = [{'V'=>{'0618'=>{'A'=>'0618', 'B'=>'0618B', 'C'=>'0618C'}}}, self, [
18
- "namespace:[ja=http://ja.wikipedia.org/wiki/, en=http://en.wikipedia.org/wiki/]",
19
18
  "locale:[=ja:, en=en:]",
20
19
  'area:[中国#{?V=A}=ja:%%<元号>#%.<中国>,China#{?V=A}=en:Chinese_era_name]',
21
20
  [self,
@@ -679,7 +678,7 @@ module When
679
678
  ],
680
679
  [self,
681
680
  "period:[唐]",
682
- ["[武徳]1" , "@F" , 'name=[高祖];618-05-20^Chinese#{A:0523}'], # 甲子 武徳2年から戊寅暦を使用
681
+ ["[武徳]1" , "@F" , 'name=[高祖];618-05-20^Chinese#{A:0523}'], # 甲子 武徳2年から戊寅元暦を使用
683
682
  ["[貞観]1" , "@A" , "name=[太宗];627-01-01"], # 乙酉
684
683
  ["[永徽]1" , "@A" , "name=[高宗];650-01-01"], # 辛丑
685
684
  ["[顕慶]1" , "" , " 656-01-07"], # 壬申
@@ -1239,7 +1238,7 @@ module When
1239
1238
  [self,
1240
1239
  "period:[中華民国=ja:%%<民国紀元>,ROC=en:Chinese_era_name#The_Republic_of_China_Era]",
1241
1240
  ["[民国=ja:%%<民国紀元>,ROC=en:Chinese_era_name#The_Republic_of_China_Era]1",
1242
- "@F", "name=;1912-01-01^Gregorian?note=ChineseNotes"]
1241
+ "@F", "name=;1912-01-01^Gregorian?note=Chinese"]
1243
1242
  ]
1244
1243
  ]]
1245
1244
  end
@@ -9,69 +9,67 @@ module When
9
9
 
10
10
  class TM::CalendarEra
11
11
 
12
- # Chinese Luni-Solar Calendar Series for ChineseNote
13
- ChineseLuniSolarSeries = [self, [
14
- 'namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]',
15
- 'locale:[=en:, ja=ja:, alias]',
16
- 'area:[ChineseLuniSolarSeries=, 中国の暦月=]',
12
+ # Chinese Luni-Solar Calendar Series for Chinese Note
13
+ ChineseLuniSolar = [self, [
14
+ 'locale:[ja=ja:, en=en:]',
15
+ 'area:[中国の暦月=, *ChineseLuniSolar=]',
17
16
  ['[太初暦]1.01.01', '@CR', '1-01-01^ChineseTwin::太初暦', '85-01-01'], # 西暦が正になるところから開始(実際は-103.01.01)
18
17
  ['[四分暦]85.01.01', '@CR', '85-01-01^ChineseTwin::四分暦', '265-01-01'],
19
18
  ['[乾象暦]222.01.01', '@CR', '222-01-01^ChineseTwin::乾象暦', '281-01-01'],
20
19
  ['[景初暦]237.01.01', '@CR', '237-01-01^ChineseTwin::景初暦', '452-01-01'],
21
20
  ['[元嘉暦]445.01.01', '@CR', '445-01-01^ChineseTwin::元嘉暦', '510-01-01'],
22
21
  ['[大明暦]510.01.01', '@CR', '510-01-01^ChineseTwin::大明暦', '590-01-01'],
23
- ['[三紀暦]384.01.01', '@CR', '384-01-01^ChineseTwin::三紀暦', '418-01-01'],
24
- ['[玄始暦]412.01.01', '@CR', '412-01-01^ChineseTwin::玄始暦', '440-01-01'],
25
- ['[玄始暦]452.01.01', '@CR', '452-01-01^ChineseTwin::玄始暦', '523-01-01'],
26
- ['[正光暦]523.01.01', '@CR', '523-01-01^ChineseTwin::正光暦', '566-01-01'],
27
- ['[興和暦]540.01.01', '@CR', '540-01-01^ChineseTwin::興和暦', '551-01-01'],
28
- ['[天保暦]551.01.01', '@CR', '551-01-01^ChineseTwin::天保暦', '578-01-01'],
29
- ['[天和暦]566.01.01', '@CR', '566-01-01^ChineseTwin::天和暦', '579-01-01'],
30
- ['[大象暦]579.01.01', '@CR', '579-01-01^ChineseTwin::大象暦', '584-01-01'],
31
- ['[開皇暦]584.01.01', '@CR', '584-01-01^ChineseTwin::開皇暦', '597-01-01'],
32
- ['[大業暦]597.01.01', '@CR', '597-01-01^ChineseTwin::大業暦', '619-01-01'],
33
- ['[戊寅暦]619.01.01', '@CR', '619-01-01^ChineseTwin::戊寅暦', '645-01-01'],
34
- ['[平朔戊寅暦]645.01.01','@CR', '645-01-01^ChineseTwin::平朔戊寅暦','665-01-01'],
22
+ ['[三紀暦=]384.01.01', '@CR', '384-01-01^ChineseTwin::三紀暦', '418-01-01'],
23
+ ['[玄始暦=]412.01.01', '@CR', '412-01-01^ChineseTwin::玄始暦', '440-01-01'],
24
+ ['[玄始暦=]452.01.01', '@CR', '452-01-01^ChineseTwin::玄始暦', '523-01-01'],
25
+ ['[正光暦=]523.01.01', '@CR', '523-01-01^ChineseTwin::正光暦', '566-01-01'],
26
+ ['[興和暦=]540.01.01', '@CR', '540-01-01^ChineseTwin::興和暦', '551-01-01'],
27
+ ['[天保暦=]551.01.01', '@CR', '551-01-01^ChineseTwin::天保暦', '578-01-01'],
28
+ ['[天和暦=]566.01.01', '@CR', '566-01-01^ChineseTwin::天和暦', '579-01-01'],
29
+ ['[大象暦=]579.01.01', '@CR', '579-01-01^ChineseTwin::大象暦', '584-01-01'],
30
+ ['[開皇暦=]584.01.01', '@CR', '584-01-01^ChineseTwin::開皇暦', '597-01-01'],
31
+ ['[大業暦=]597.01.01', '@CR', '597-01-01^ChineseTwin::大業暦', '619-01-01'],
32
+ ['[戊寅元暦]619.01.01', '@CR', '619-01-01^ChineseTwin::戊寅元暦', '645-01-01'],
33
+ ['[平朔戊寅暦=]645.01.01','@CR','645-01-01^ChineseTwin::平朔戊寅暦','665-01-01'],
35
34
  ['[麟徳暦]665.01.01', '@CR', '665-01-01^ChineseTwin::麟徳暦', '729-01-01'],
36
35
  ['[大衍暦]729.01.01', '@CR', '729-01-01^ChineseTwin::大衍暦', '762-01-01'],
37
36
  ['[五紀暦]762.01.01', '@CR', '762-01-01^ChineseTwin::五紀暦', '784-01-01'],
38
- ['[正元暦]784.01.01', '@CR', '784-01-01^ChineseTwin::正元暦', '807-01-01'],
37
+ ['[正元暦=]784.01.01', '@CR', '784-01-01^ChineseTwin::正元暦', '807-01-01'],
39
38
  ['[宣明暦]822.01.01', '@CR', '822-01-01^ChineseTwin::宣明暦', '893-01-01'],
40
- ['[崇玄暦]893.01.01', '@CR', '893-01-01^ChineseTwin::崇玄暦', '956-01-01'],
39
+ ['[崇玄暦=]893.01.01', '@CR', '893-01-01^ChineseTwin::崇玄暦', '956-01-01'],
41
40
  ['[授時暦]1281.01.01', '@CR','1281-01-01^ChineseTwin::授時暦', '1368-01-01'],
42
41
  ['[大統暦]1368.01.01', '@CR','1368-01-01^ChineseTwin::大統暦', '1645-01-01']
43
42
  ]]
44
43
 
45
- # Chinese Solar Calendar Series for ChineseNote
46
- ChineseSolarSeries = [self, [
47
- 'namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]',
48
- 'locale:[=en:, ja=ja:, alias]',
49
- 'area:[ChineseSolarSeries=, 中国の節月=]',
50
- ['[太初暦]1.01.01', '@CR', '1-01-01^ChineseTwin::太初暦(節月)', '85-01-06'], # 西暦が正になるところから開始(実際は-103.01.15)
51
- ['[四分暦]85.01.07', '@CR', '85-01-07^ChineseTwin::四分暦(節月)', '264-12-28'],
52
- ['[乾象暦]221.12.23', '@CR', '221-12-23^ChineseTwin::乾象暦(節月)', '280-12-31'],
53
- ['[景初暦]237.01.07', '@CR', '237-01-07^ChineseTwin::景初暦(節月)', '451-12-31'],
54
- ['[元嘉暦]444.12.22', '@CR', '444-12-22^ChineseTwin::元嘉暦(節月)', '509-12-24'],
55
- ['[大明暦]509.12.23', '@CR', '509-12-23^ChineseTwin::大明暦(節月)', '590-01-08'],
56
- ['[三紀暦]384.01.02', '@CR', '384-01-02^ChineseTwin::三紀暦(節月)', '418-01-16'],
57
- ['[玄始暦]411.12.26', '@CR', '411-12-26^ChineseTwin::玄始暦(節月)', '440-01-15'],
58
- ['[玄始暦]452.01.02', '@CR', '452-01-02^ChineseTwin::玄始暦(節月)', '522-12-29'],
59
- ['[正光暦]522.12.29', '@CR', '522-12-29^ChineseTwin::正光暦(節月)', '566-01-05'],
60
- ['[興和暦]539.12.22', '@CR', '539-12-22^ChineseTwin::興和暦(節月)', '550-12-20'],
61
- ['[天保暦]550.12.19', '@CR', '550-12-19^ChineseTwin::天保暦(節月)', '577-12-21'],
62
- ['[天和暦]566.01.05', '@CR', '566-01-05^ChineseTwin::天和暦(節月)', '579-01-11'],
63
- ['[大象暦]579.01.11', '@CR', '579-01-11^ChineseTwin::大象暦(節月)', '584-01-15'],
64
- ['[開皇暦]584.01.16', '@CR', '584-01-16^ChineseTwin::開皇暦(節月)', '596-12-23'],
65
- ['[大業暦]596.12.22', '@CR', '596-12-22^ChineseTwin::大業暦(節月)', '618-12-19'],
66
- ['[戊寅暦]618.12.19', '@CR', '618-12-19^ChineseTwin::戊寅暦(節月)', '664-12-21'],
67
- ['[麟徳暦]664.12.21', '@CR', '664-12-21^ChineseTwin::麟徳暦(節月)', '729-01-03'],
68
- ['[大衍暦]729.01.03', '@CR', '729-01-03^ChineseTwin::大衍暦(節月)', '761-12-29'],
69
- ['[五紀暦]761.12.29', '@CR', '761-12-29^ChineseTwin::五紀暦(節月)', '783-12-26'],
70
- ['[正元暦]783.12.26', '@CR', '783-12-26^ChineseTwin::正元暦(節月)', '807-01-11'],
71
- ['[宣明暦]821.01.01', '@CR', '821-01-01^ChineseTwin::宣明暦(節月)', '892-12-22'], # 年の始めに遡って開始(実際は12.27)
72
- ['[崇玄暦]892.12.22', '@CR', '892-12-22^ChineseTwin::崇玄暦(節月)', '956-01-15'],
73
- ['[授時暦]1280.01.01', '@CR', '1280-01-01^ChineseTwin::授時暦(節月)','1367-12-24'],
74
- ['[大統暦]1367.12.24', '@CR', '1367-12-24^ChineseTwin::大統暦(節月)','1644-12-24']
44
+ # Chinese Solar Calendar Series for Chinese Note
45
+ ChineseSolar = [self, [
46
+ 'locale:[ja=ja:, en=en:]',
47
+ 'area:[中国の節月=, *ChineseSolar=]',
48
+ ['[太初暦]1.01.01', '@CR', '1-01-01^ChineseTwin::太初暦(節月)', '85-01-06'], # 西暦が正になるところから開始(実際は-103.01.15)
49
+ ['[四分暦]85.01.07', '@CR', '85-01-07^ChineseTwin::四分暦(節月)', '264-12-28'],
50
+ ['[乾象暦]221.12.23', '@CR', '221-12-23^ChineseTwin::乾象暦(節月)', '280-12-31'],
51
+ ['[景初暦]237.01.07', '@CR', '237-01-07^ChineseTwin::景初暦(節月)', '451-12-31'],
52
+ ['[元嘉暦]444.12.22', '@CR', '444-12-22^ChineseTwin::元嘉暦(節月)', '509-12-24'],
53
+ ['[大明暦]509.12.23', '@CR', '509-12-23^ChineseTwin::大明暦(節月)', '590-01-08'],
54
+ ['[三紀暦=]384.01.02', '@CR', '384-01-02^ChineseTwin::三紀暦(節月)', '418-01-16'],
55
+ ['[玄始暦=]411.12.26', '@CR', '411-12-26^ChineseTwin::玄始暦(節月)', '440-01-15'],
56
+ ['[玄始暦=]452.01.02', '@CR', '452-01-02^ChineseTwin::玄始暦(節月)', '522-12-29'],
57
+ ['[正光暦=]522.12.29', '@CR', '522-12-29^ChineseTwin::正光暦(節月)', '566-01-05'],
58
+ ['[興和暦=]539.12.22', '@CR', '539-12-22^ChineseTwin::興和暦(節月)', '550-12-20'],
59
+ ['[天保暦=]550.12.19', '@CR', '550-12-19^ChineseTwin::天保暦(節月)', '577-12-21'],
60
+ ['[天和暦=]566.01.05', '@CR', '566-01-05^ChineseTwin::天和暦(節月)', '579-01-11'],
61
+ ['[大象暦=]579.01.11', '@CR', '579-01-11^ChineseTwin::大象暦(節月)', '584-01-15'],
62
+ ['[開皇暦=]584.01.16', '@CR', '584-01-16^ChineseTwin::開皇暦(節月)', '596-12-23'],
63
+ ['[大業暦=]596.12.22', '@CR', '596-12-22^ChineseTwin::大業暦(節月)', '618-12-19'],
64
+ ['[戊寅元暦]618.12.19', '@CR', '618-12-19^ChineseTwin::戊寅元暦(節月)', '664-12-21'],
65
+ ['[麟徳暦]664.12.21', '@CR', '664-12-21^ChineseTwin::麟徳暦(節月)', '729-01-03'],
66
+ ['[大衍暦]729.01.03', '@CR', '729-01-03^ChineseTwin::大衍暦(節月)', '761-12-29'],
67
+ ['[五紀暦]761.12.29', '@CR', '761-12-29^ChineseTwin::五紀暦(節月)', '783-12-26'],
68
+ ['[正元暦=]783.12.26', '@CR', '783-12-26^ChineseTwin::正元暦(節月)', '807-01-11'],
69
+ ['[宣明暦]821.01.01', '@CR', '821-01-01^ChineseTwin::宣明暦(節月)', '892-12-22'], # 年の始めに遡って開始(実際は12.27)
70
+ ['[崇玄暦=]892.12.22', '@CR', '892-12-22^ChineseTwin::崇玄暦(節月)', '956-01-15'],
71
+ ['[授時暦]1280.01.01', '@CR', '1280-01-01^ChineseTwin::授時暦(節月)', '1367-12-24'],
72
+ ['[大統暦]1367.12.24', '@CR', '1367-12-24^ChineseTwin::大統暦(節月)', '1644-12-24']
75
73
  ]]
76
74
  end
77
75
 
@@ -106,7 +104,6 @@ module When
106
104
  }
107
105
 
108
106
  ChineseTwin = [{}, When::BasicTypes::M17n, ChineseSolar.twin('ChineseTwin', [
109
- "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
110
107
  "locale:[=ja:, en=en:, alias]",
111
108
  "area:[中国,China]",
112
109
 
@@ -223,7 +220,7 @@ module When
223
220
  ],
224
221
 
225
222
  [ChineseLuniSolar,
226
- 'name:[戊寅暦]',
223
+ 'name:[戊寅元暦]',
227
224
  'time_basis:+00,+#{P:00}',
228
225
  {'formula'=>['12S', '1L'].map {|f| [
229
226
  Ephemeris::ChineseTrueLunation, {
@@ -9,12 +9,13 @@ module When
9
9
 
10
10
  class BasicTypes::M17n
11
11
 
12
- ChristianTerms = [self, [
13
- "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
12
+ Christian = [self, [
14
13
  "locale:[=en:, ja=ja:, alias]",
15
- "names:[ChristianTerms=]",
16
- "[Julian=en:Julian_calendar, ユリウス暦 ]",
17
- "[Gregorian=en:Gregorian_calendar, グレゴリオ暦]",
14
+ "names:[Christian=]",
15
+ "[Julian=en:Julian_calendar, ユリウス暦 ]",
16
+ "[Gregorian=en:Gregorian_calendar, グレゴリオ暦 ]",
17
+ "[RevisedJulian=en:Revised_Julian_calendar, 修正ユリウス暦]",
18
+ "[Swedish=en:Swedish_calendar, スウェーデン暦]",
18
19
  "[Civil in the West=en:Civil_calendar, 西暦, *alias:Civil]"
19
20
  ]]
20
21
  end
@@ -22,11 +23,10 @@ module When
22
23
  class TM::CalendarEra
23
24
  # Anno Mundi Era
24
25
  Byzantine = [self, [
25
- "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
26
26
  "locale:[=en:, ja=ja:, alias]",
27
27
  "period:[Byzantine=en:Byzantine_calendar, ビザンティン暦=ja:%%<世界創造紀元>]",
28
28
  ["[AM=en:Anno_Mundi, 世界創造紀元, alias:Anno_Mundi]6497.9.1",
29
- "Calendar Epoch", "989-09-01^Julian?border=[-1,9,1]&note=RomanNote", "1453=5-29"]
29
+ "Calendar Epoch", "989-09-01^Julian?border=[-1,9,1]&note=Roman", "1453=5-29"]
30
30
  ]]
31
31
  end
32
32
 
@@ -37,6 +37,11 @@ module When
37
37
  #
38
38
  class Christian < When::TM::Calendar
39
39
 
40
+ # デフォルトの改暦日付(ユリウス通日)
41
+ #
42
+ # @private
43
+ DefaultReformDate = 2299161 # 1582-10-15
44
+
40
45
  # @private
41
46
  #
42
47
  # ::Date オブジェクトに対応する暦法名
@@ -52,11 +57,7 @@ module When
52
57
 
53
58
  # 年月日 -> 通日
54
59
  #
55
- # @param [Numeric] y 年
56
- # @param [Integer] m 月 (0 始まり)
57
- # @param [Integer] d 日 (0 始まり)
58
- #
59
- # @return [Integer] 通日
60
+ # @see When::CalendarTypes::TableBased#_coordinates_to_number
60
61
  #
61
62
  def _coordinates_to_number(y,m,d)
62
63
  m = (+m + 10) % 12
@@ -68,12 +69,7 @@ module When
68
69
 
69
70
  # 通日 - > 年月日
70
71
  #
71
- # @param [Integer] jdn 通日
72
- #
73
- # @return [Array<Integer>] ( y, m, d )
74
- # [ y 年 ]
75
- # [ m 月 (0 始まり) ]
76
- # [ d 日 (0 始まり) ]
72
+ # @see When::CalendarTypes::TableBased#_number_to_coordinates
77
73
  #
78
74
  def _number_to_coordinates(jdn)
79
75
  j = jdn.to_i + 1401
@@ -88,14 +84,7 @@ module When
88
84
 
89
85
  # 暦要素数
90
86
  #
91
- # @overload _length(date)
92
- # @param [Array<Integer>] date ( 年 )
93
- # @return [Integer] 12 (=その年の月数)
94
- #
95
- # @overload _length(date)
96
- # @param [Array<Integer>] date ( 年, 月 )
97
- # @note 月は 0 始まりの通番
98
- # @return [Integer] その年月の日数
87
+ # @see When::CalendarTypes::TableBased#_length
99
88
  #
100
89
  def _length(date)
101
90
  yy, mm = date
@@ -104,17 +93,18 @@ module When
104
93
  return (((((mm + 10) % 12) % 5) % 2) == 0) ? 31 : 30
105
94
  end
106
95
 
96
+ # 復活祭の遅延日数
97
+ #
98
+ # @private
99
+ def _easter_delay(year)
100
+ 0
101
+ end
102
+
107
103
  private
108
104
 
109
105
  def _normalize(args=[], options={})
110
106
  raise TypeError, "#{self.class} is abstract class" unless @label
111
- @note = When.CalendarNote(@note || 'Christian')
112
- @indices ||= [
113
- Index.new({:unit =>12,
114
- :trunk=>m17n('[::_m:CalendarTerms::Month::*]')}),
115
-
116
- DefaultDayIndex
117
- ]
107
+ @note = When.CalendarNote(@note || 'Christian')
118
108
  super
119
109
  end
120
110
  end
@@ -143,69 +133,127 @@ module When
143
133
  private
144
134
 
145
135
  def _normalize(args=[], options={})
146
- @label ||= When.Resource('_m:ChristianTerms::Julian')
136
+ @label ||= 'Christian::Julian'
147
137
  super
148
138
  end
149
139
  end
150
140
 
151
141
  #
152
- # Gregorian Calendar
142
+ # Swedish Calendar
153
143
  #
154
- class Gregorian < Christian
144
+ class Swedish < Julian
155
145
 
156
- # 通日 - > ユリウス暦とグレゴリオ暦の差
146
+ # デフォルトの改暦日付(ユリウス通日)
147
+ #
148
+ # @private
149
+ DefaultReformDate = 2361390 # 1753-03-01
150
+
151
+ # @private
152
+ # Julian - 17000229 17120229
153
+ SwedishCalendarRange = 2342042...2346425
154
+
155
+ # @private
156
+ ExtraDate = [1712,1,29]
157
+
158
+ # @private
159
+ Length = {
160
+ [1700, nil] => 365,
161
+ [1700, 1] => 28,
162
+ [1712, nil] => 367,
163
+ [1712, 1] => 30
164
+ }
165
+
166
+ # Ref: http://www.ortelius.de/kalender/east_en.php
167
+ # @private
168
+ EasterDelay = {
169
+ 1741 => -7,
170
+ 1742 => -35,
171
+ 1744 => -7,
172
+ 1745 => -7,
173
+ 1747 => -28,
174
+ 1748 => -7,
175
+ 1750 => -28,
176
+ 1751 => -7,
177
+ 1752 => -7,
178
+ 1802 => +7,
179
+ 1805 => +7,
180
+ 1818 => +7
181
+ }
182
+
183
+ # 年月日 -> 通日
157
184
  #
158
- # @param [Integer] jdn 通日
185
+ # @see When::CalendarTypes::TableBased#_coordinates_to_number
159
186
  #
160
- # @return [Integer] ユリウス暦とグレゴリオ暦の差
187
+ def _coordinates_to_number(y,m,d)
188
+ jdn = super
189
+ return SwedishCalendarRange.last if [+y, m, d] == ExtraDate
190
+ SwedishCalendarRange.include?(jdn-1) ? jdn-1 : jdn
191
+ end
192
+
193
+ # 通日 - > 年月日
161
194
  #
162
- def self.diff(jdn)
163
- div, mod = (jdn - 77528).divmod(36524.25)
164
- c = div - 45
165
- (3*(c-3)).div(4)+1
195
+ # @see When::CalendarTypes::TableBased#_number_to_coordinates
196
+ #
197
+ def _number_to_coordinates(jdn)
198
+ return ExtraDate.dup if jdn == SwedishCalendarRange.last
199
+ super(SwedishCalendarRange.include?(jdn) ? jdn+1 : jdn)
166
200
  end
167
201
 
168
- # 年月日 -> 通日
202
+ # 暦要素数
203
+ #
204
+ # @see When::CalendarTypes::TableBased#_length
169
205
  #
170
- # @param [Numeric] y 年
171
- # @param [Integer] m (0 始まり)
172
- # @param [Integer] d 日 (0 始まり)
206
+ def _length(date)
207
+ y, m = date
208
+ Length[[+y,m]] || super
209
+ end
210
+
211
+ # 復活祭の遅延日数
212
+ #
213
+ # @private
214
+ def _easter_delay(year)
215
+ EasterDelay[year] || 0
216
+ end
217
+
218
+ private
219
+
220
+ def _normalize(args=[], options={})
221
+ @label ||= 'Christian::Swedish'
222
+ super
223
+ end
224
+ end
225
+
226
+ #
227
+ # Variation of Christian Calendar
228
+ #
229
+ class ReformVariation < Christian
230
+
231
+ # 年月日 -> 通日
173
232
  #
174
- # @return [Integer] 通日
233
+ # @see When::CalendarTypes::TableBased#_coordinates_to_number
175
234
  #
176
235
  def _coordinates_to_number(y,m,d)
177
- c = ((m < 2) ? +y-1 : +y).to_i.div(100)
178
- super - ((3*(c-3)).div(4)+1)
236
+ super - _diff_from_century(((m < 2) ? +y-1 : +y).to_i.div(100))
179
237
  end
180
238
 
181
239
  # 通日 - > 年月日
182
240
  #
183
- # @param [Integer] jdn 通日
184
- #
185
- # @return [Array<Integer>] [ y, m, d ]
186
- # y 年
187
- # m 月 (0 始まり)
188
- # d 日 (0 始まり)
241
+ # @see When::CalendarTypes::TableBased#_number_to_coordinates
189
242
  #
190
243
  def _number_to_coordinates(jdn)
191
- super(jdn + Gregorian.diff(jdn))
244
+ super(jdn + _diff_from_century(_century_from_jdn(jdn)))
192
245
  end
193
246
 
194
247
  # 暦要素数
195
248
  #
196
- # @overload _length(date)
197
- # @param [Array<Integer>] date ( 年 )
198
- # @return [Integer] 12 (=その年の月数)
199
- #
200
- # @overload _length(date)
201
- # @param [Array<Integer>] date ( 年, 月 )
202
- # @note 月は 0 始まりの通番
203
- # @return [Integer] その年月の日数
249
+ # @see When::CalendarTypes::TableBased#_length
204
250
  #
205
251
  def _length(date)
206
252
  yy, mm = date
207
- return 28 if (((yy % 400) != 0) && ((yy % 100) == 0) && (mm == 1))
208
- return super
253
+ return super unless mm == 1 # 2月でなければユリウス暦と同じ
254
+ cc, yy = yy.divmod(100)
255
+ return super unless yy == 0 # 100で割り切れない年はユリウス暦と同じ
256
+ 29 - (_diff_from_century(cc) - _diff_from_century(cc-1))
209
257
  end
210
258
 
211
259
  # 太陰方程式
@@ -216,13 +264,78 @@ module When
216
264
  #
217
265
  def _lunar_equation(year)
218
266
  h = +year.div(100)
219
- -h + h.div(4) + (8*(h+11)).div(25) - 3
267
+ (8*(h+11)).div(25) - (_diff_from_century(h) + 5)
268
+ end
269
+ end
270
+
271
+ #
272
+ # Gregorian Calendar
273
+ #
274
+ class Gregorian < ReformVariation
275
+
276
+ # 百年代 - > ユリウス暦とグレゴリオ暦の差
277
+ #
278
+ # @param [Integer] century 百年代
279
+ #
280
+ # @return [Integer] ユリウス暦とグレゴリオ暦の差
281
+ #
282
+ def _diff_from_century(century)
283
+ (3*(century-3)).div(4)+1
284
+ end
285
+
286
+ # 通日 - > 百年代
287
+ #
288
+ # @param [Integer] jdn 通日
289
+ #
290
+ # @return [Integer] 百年代
291
+ #
292
+ def _century_from_jdn(jdn)
293
+ (4 * jdn - 6884477).div(146097)
220
294
  end
221
295
 
222
296
  private
223
297
 
224
298
  def _normalize(args=[], options={})
225
- @label ||= When.Resource('_m:ChristianTerms::Gregorian')
299
+ @label ||= 'Christian::Gregorian'
300
+ super
301
+ end
302
+ end
303
+
304
+ #
305
+ # Revised Julian Calendar
306
+ #
307
+ class RevisedJulian < ReformVariation
308
+
309
+ # デフォルトの改暦日付(ユリウス通日)
310
+ #
311
+ # @private
312
+ DefaultReformDate = 2423707 # 1923-10-14
313
+
314
+ # 百年代 - > ユリウス暦と修正ユリウス暦の差
315
+ #
316
+ # @param [Integer] century 百年代
317
+ #
318
+ # @return [Integer] ユリウス暦と修正ユリウス暦の差
319
+ #
320
+ def _diff_from_century(century)
321
+ (7*(century-1)).div(9)-1
322
+ end
323
+
324
+ # 通日 - > 百年代
325
+ #
326
+ # @param [Integer] jdn 通日
327
+ #
328
+ # @return [Integer] 百年代
329
+ #
330
+ def _century_from_jdn(jdn)
331
+ (9 * jdn - 15490078).div(328718)
332
+ end
333
+
334
+ private
335
+
336
+ def _normalize(args=[], options={})
337
+ @label ||= 'Christian::RevisedJulian'
338
+ # @diff ||= [-2, -1, -1, 0, 1, 2, 2, 3, 4, 5] # 1~10世紀の各世紀のユリウス暦と差の日数
226
339
  super
227
340
  end
228
341
  end
@@ -233,7 +346,7 @@ module When
233
346
  class Civil < Gregorian
234
347
 
235
348
  #
236
- # グレゴリオ暦への改暦日付
349
+ # 改暦日付
237
350
  #
238
351
  # @return [Integer]
239
352
  #
@@ -258,34 +371,25 @@ module When
258
371
 
259
372
  # 年月日 -> 通日
260
373
  #
261
- # @param [Numeric] y 年
262
- # @param [Integer] m 月 (0 始まり)
263
- # @param [Integer] d 日 (0 始まり)
264
- #
265
- # @return [Integer] 通日
374
+ # @see When::CalendarTypes::TableBased#_coordinates_to_number
266
375
  #
267
376
  def _coordinates_to_number(y,m,d)
268
377
  skip, limit = @the_length[[y,m]]
269
378
  d += skip if skip && d >= limit
270
- jdn = super(y,m,d)
271
- jdn >= @reform_jdn ? jdn : @past._coordinates_to_number(y + @origin_of_MSC - @past.origin_of_MSC, m, d)
379
+ jdn = @new._coordinates_to_number(y,m,d)
380
+ jdn >= @reform_jdn ? jdn : @old._coordinates_to_number(y + @origin_of_MSC - @old.origin_of_MSC, m, d)
272
381
  end
273
382
 
274
383
  # 通日 - > 年月日
275
384
  #
276
- # @param [Integer] jdn 通日
277
- #
278
- # @return [Array<Integer>] ( y, m, d )
279
- # [ y 年 ]
280
- # [ m 月 (0 始まり) ]
281
- # [ d 日 (0 始まり) ]
385
+ # @see When::CalendarTypes::TableBased#_number_to_coordinates
282
386
  #
283
387
  def _number_to_coordinates(jdn)
284
388
  if jdn >= @reform_jdn
285
- date = super
389
+ date = @new._number_to_coordinates(jdn)
286
390
  else
287
- date = @past._number_to_coordinates(jdn)
288
- date[0] -= @origin_of_MSC - @past.origin_of_MSC
391
+ date = @old._number_to_coordinates(jdn)
392
+ date[0] -= @origin_of_MSC - @old.origin_of_MSC
289
393
  end
290
394
  skip, limit = @the_length[date[0..-2]]
291
395
  date[2] -= skip if skip && date[2] >= limit
@@ -294,22 +398,15 @@ module When
294
398
 
295
399
  # 暦要素数
296
400
  #
297
- # @overload _length(date)
298
- # @param [Array<Integer>] date ( 年 )
299
- # @return [Integer] 12 (=その年の月数)
300
- #
301
- # @overload _length(date)
302
- # @param [Array<Integer>] date ( 年, 月 )
303
- # @note 月は 0 始まりの通番
304
- # @return [Integer] その年月の日数
401
+ # @see When::CalendarTypes::TableBased#_length
305
402
  #
306
403
  def _length(date)
307
404
  return @the_length[date][2] if @the_length[date]
308
405
  yy, mm = date
309
406
  (yy > @reform_date[0]) ||
310
407
  (yy == @reform_date[0] && (!mm || mm >= @reform_date[1])) ?
311
- super :
312
- @past._length([yy + @origin_of_MSC - @past.origin_of_MSC, mm])
408
+ @new._length(date) :
409
+ @old._length([yy + @origin_of_MSC - @old.origin_of_MSC, mm])
313
410
  end
314
411
 
315
412
  # 太陰方程式
@@ -319,27 +416,35 @@ module When
319
416
  # @note 太陽暦日の補正も、本メソッドで行う
320
417
  #
321
418
  def _lunar_equation(year)
322
- year >= @the_easter ? super : 0
419
+ year >= @the_easter ? @new._lunar_equation(year) : @old._lunar_equation(year)
420
+ end
421
+
422
+ # 復活祭の遅延日数
423
+ #
424
+ # @private
425
+ def _easter_delay(year)
426
+ @old._easter_delay(year)
323
427
  end
324
428
 
325
429
  private
326
430
 
327
431
  # オブジェクトの正規化
328
432
  #
329
- # @past = グレゴリオ暦への改暦前の暦法
433
+ # @old = 改暦前の暦法(デフォルトはユリウス暦)
434
+ # @new = 改暦後の暦法(デフォルトはグレゴリオ暦)
330
435
  # @reform_date = 改暦日付(月日は 1 オリジンで指定し、0 オリジンに直して保持)
331
436
  # @reform_jdn = 改暦日付のユリウス通日
332
437
  # @reform = reform_date か reform_jdn を内容で判別し、どちらかに反映する
333
- # @the_easter = グレゴリオ暦の復活祭計算の適用を始める年
438
+ # @the_easter = 新暦法の復活祭計算の適用を始める年
334
439
  # @the_length = 通常と異なる日付となる年月の情報({[年,月]=>[スキップした日数, スキップし始める日, 月の日数]})
335
440
  #
336
441
  def _normalize(args=[], options={})
337
- @label ||= When.Resource('_m:ChristianTerms::Civil')
442
+ @label ||= 'Christian::Civil'
338
443
 
339
444
  # 前後の暦法
340
- @past = When.Calendar(@past || 'Julian')
341
- gregorian = When.Calendar('Gregorian')
342
- @indices ||= @past.indices
445
+ @old = When.Calendar(@old || 'Julian')
446
+ @new = When.Calendar(@new || 'Gregorian')
447
+ @indices ||= @old.indices
343
448
 
344
449
  # 改暦日付 (0 オリジン)
345
450
  @reform = When::Coordinates::Pair._en_pair_date_time(@reform) if @reform.kind_of?(String)
@@ -353,27 +458,27 @@ module When
353
458
  @reform_date = When::Coordinates::Pair._en_pair_date_time(@reform_date) if @reform_date.kind_of?(String)
354
459
  @reform_date = @reform_date.map {|c| c.to_i}
355
460
  (1..2).each {|i| @reform_date[i] = @reform_date[i] ? @reform_date[i] - 1 : 0 }
356
- @reform_jdn = gregorian._coordinates_to_number(*@reform_date)
461
+ @reform_jdn = @new._coordinates_to_number(*@reform_date)
357
462
  else
358
- @reform_jdn ||= 2299161 # 1582-10-15
463
+ @reform_jdn ||= [@old.class::DefaultReformDate, @new.class::DefaultReformDate].max
359
464
  @reform_jdn = @reform_jdn.to_i
360
- @reform_date = gregorian._number_to_coordinates(@reform_jdn)
465
+ @reform_date = @new._number_to_coordinates(@reform_jdn)
361
466
  end
362
- last_date = @past._number_to_coordinates(@reform_jdn-1)
467
+ last_date = @old._number_to_coordinates(@reform_jdn-1)
363
468
 
364
469
  # 復活祭との前後関係
365
- @the_easter = @reform_jdn > When.CalendarNote('Christian').easter(@reform_date[0], gregorian) ? @reform_date[0]+1 : @reform_date[0]
470
+ @the_easter = @reform_jdn > When.CalendarNote('Christian').easter(@reform_date[0], @new) ? @reform_date[0]+1 : @reform_date[0]
366
471
 
367
472
  # 月の日数
368
- this_month = @reform_date[0..1]
369
- greg_length = gregorian._length(this_month)
370
- @the_length = {}
473
+ this_month = @reform_date[0..1]
474
+ new_length = @new._length(this_month)
475
+ @the_length = {}
371
476
  if @reform_date[1] == last_date[1] # 同一月内に閉じた改暦
372
477
  skipped_length = @reform_date[2] - last_date[2] - 1
373
- @the_length[this_month] = [skipped_length, last_date[2]+1, greg_length-skipped_length]
478
+ @the_length[this_month] = [skipped_length, last_date[2]+1, new_length-skipped_length]
374
479
  else
375
480
  last_month = [(@reform_date[1] > last_date[1] ? @reform_date[0] : @reform_date[0]-1), last_date[1]]
376
- @the_length[this_month] = [@reform_date[2], 0, greg_length - @reform_date[2]]
481
+ @the_length[this_month] = [@reform_date[2], 0, new_length - @reform_date[2]]
377
482
  @the_length[last_month] = [false, false, last_date[2]+1]
378
483
  end
379
484
 
@@ -411,7 +516,7 @@ module When
411
516
  #
412
517
  # @return [Array<Numeric>] その年の境界
413
518
  #
414
- def border(date=[], frame=When.Calendar('Gregorian'))
519
+ def border(date=[], frame=When::Gregorian)
415
520
  frame._encode(frame._number_to_coordinates(frame.note.easter(date[0], frame)), false)
416
521
  end
417
522
 
@@ -429,8 +534,7 @@ module When
429
534
  #
430
535
  class CalendarNote::Christian < CalendarNote
431
536
 
432
- NoteObjects = [When::BasicTypes::M17n, [
433
- "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
537
+ Notes = [When::BasicTypes::M17n, [
434
538
  "locale:[=en:, ja=ja:, alias]",
435
539
  "names:[Christian]",
436
540
 
@@ -515,6 +619,11 @@ module When
515
619
  60 => "Corpus Christi",
516
620
  }.update(moveable_feasts)
517
621
 
622
+ #
623
+ # 暦法によってイベントの動作を変えるか否か
624
+ #
625
+ CalendarDepend = true
626
+
518
627
  # 週日補正フラグ
519
628
  # @return [Integer]
520
629
  attr_reader :w
@@ -554,11 +663,11 @@ module When
554
663
  # 七曜
555
664
  #
556
665
  # @param [When::TM::TemporalPosition] date
557
- # @param [When::TM::ReferenceSystem] frame 使用する暦法(ダミー)
666
+ # @param [When::TM::CalDate] base (not used)
558
667
  #
559
668
  # @return [When::Coordinates::Residue] 七曜
560
669
  #
561
- def week(date, frame=nil)
670
+ def week(date, base=nil)
562
671
  When.Residue('Week')[date.to_i % 7]
563
672
  end
564
673
 
@@ -566,7 +675,7 @@ module When
566
675
  #
567
676
  # @param [Numeric] date 西暦の年数
568
677
  # @param [When::TM::TemporalPosition] date
569
- # @param [When::TM::ReferenceSystem] frame 使用する暦法(デフォルトは When.Resource('_c:Gregorian'))
678
+ # @param [When::TM::ReferenceSystem] frame 使用する暦法(デフォルトは When::Gregorian)
570
679
  #
571
680
  # @return [Integer] クリスマスのユリウス通日(dateが西暦の年数の場合)
572
681
  # @return [When::TM::CalDate] クリスマスのWhen::TM::CalDate(yearがWhen::TM::TemporalPositionの場合)
@@ -581,7 +690,7 @@ module When
581
690
  #
582
691
  # @param [Numeric] date 西暦の年数
583
692
  # @param [When::TM::TemporalPosition] date
584
- # @param [When::TM::ReferenceSystem] frame 使用する暦法(デフォルトは When.Resource('_c:Gregorian'))
693
+ # @param [When::TM::ReferenceSystem] frame 使用する暦法(デフォルトは When::Gregorian)
585
694
  #
586
695
  # @return [Integer] 復活祭のユリウス通日(dateが西暦の年数の場合)
587
696
  # @return [When::TM::CalDate] 復活祭のWhen::TM::CalDate(yearがWhen::TM::TemporalPositionの場合)
@@ -598,14 +707,14 @@ module When
598
707
  end
599
708
  result = frame._coordinates_to_number(year, 2, 0) + @d - 1 - m
600
709
  result += @g - (result-@w) % 7 if @w<7
601
- result
710
+ result + frame._easter_delay(year)
602
711
  end
603
712
  end
604
713
 
605
714
  # イベントの標準的な間隔を返す
606
715
  # @private
607
716
  def _delta(parameter=nil)
608
- return When::DurationP1Y
717
+ return When::P1Y
609
718
  end
610
719
 
611
720
  # @private
@@ -617,7 +726,7 @@ module When
617
726
  # 固定祝日
618
727
  #
619
728
  # @param [When::TM::TemporalPosition] date
620
- # @param [When::TM::ReferenceSystem] frame 使用する暦法(デフォルトは When.Resource('_c:Gregorian'))
729
+ # @param [When::TM::ReferenceSystem] frame 使用する暦法(デフォルトは When::Gregorian)
621
730
  #
622
731
  # @return [String] 祝日の名称
623
732
  # @return [nil] 祝日に該当しない
@@ -630,7 +739,7 @@ module When
630
739
  # 移動祝日
631
740
  #
632
741
  # @param [When::TM::TemporalPosition] date
633
- # @param [When::TM::ReferenceSystem] frame 使用する暦法(デフォルトは When.Resource('_c:Gregorian'))
742
+ # @param [When::TM::ReferenceSystem] frame 使用する暦法(デフォルトは When::Gregorian)
634
743
  #
635
744
  # @return [String] 祝日の名称
636
745
  # @return [nil] 祝日に該当しない
@@ -675,7 +784,7 @@ module When
675
784
  #
676
785
  def _to_date_for_note(date)
677
786
  return When.Calendar(When::CalendarTypes::Christian._default_start(date)) ^ date if ::Object.const_defined?(:Date) && date.kind_of?(::Date)
678
- return When.Calendar('Gregorian') ^ date if date.kind_of?(::Time)
787
+ return When::Gregorian ^ date if date.kind_of?(::Time)
679
788
  return date if date.frame.kind_of?(When::CalendarTypes::Christian)
680
789
  When.Calendar(date.frame.iri =~ /Coptic/ || date.to_i < 2299161 ? 'Julian' : 'Gregorian') ^ date
681
790
  end
@@ -683,7 +792,7 @@ module When
683
792
  # 当該年のイベントの日付
684
793
  # date : 西暦の年数 or When::TM::(Temporal)Position
685
794
  # event : イベント名 (String)
686
- # frame : 暦法(デフォルトは When.Resource('_c:Gregorian'))
795
+ # frame : 暦法(デフォルトは When:Gregorian)
687
796
  #
688
797
  # @return [Integer] イベントのユリウス通日(dateが西暦の年数の場合)
689
798
  # @return [When::TM::CalDate] イベントのWhen::TM::CalDate(yearがWhen::TM::(Temporal)Positionの場合)
@@ -706,7 +815,7 @@ module When
706
815
  else
707
816
  raise TypeError, "Irregal date type: #{date.class}"
708
817
  end
709
- frame ||= When.Resource('_c:Gregorian')
818
+ frame ||= When::Gregorian
710
819
  result = yield(year, frame)
711
820
  return result if date.kind_of?(Numeric)
712
821
  return frame.jul_trans(result, options)