when_exe 0.3.5 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/irb.rc +1 -0
- data/bin/locales.rb +8 -6
- data/bin/when.rb +1 -1
- data/lib/when_exe.rb +231 -146
- data/lib/when_exe/basictypes.rb +108 -18
- data/lib/when_exe/calendarnote.rb +263 -116
- data/lib/when_exe/calendartypes.rb +413 -22
- data/lib/when_exe/coordinates.rb +58 -36
- data/lib/when_exe/core/compatibility.rb +8 -6
- data/lib/when_exe/core/extension.rb +40 -15
- data/lib/when_exe/ephemeris.rb +20 -19
- data/lib/when_exe/{region → ephemeris}/moon.rb +4 -4
- data/lib/when_exe/{region/ephemeric_notes.rb → ephemeris/notes.rb} +25 -6
- data/lib/when_exe/{region → ephemeris}/planets.rb +0 -0
- data/lib/when_exe/{region → ephemeris}/sun.rb +7 -3
- data/lib/when_exe/{region → ephemeris}/v50.rb +0 -0
- data/lib/when_exe/googlecalendar.rb +2 -2
- data/lib/when_exe/icalendar.rb +3 -3
- data/lib/when_exe/inspect.rb +130 -70
- data/lib/when_exe/locales/af.rb +2 -2
- data/lib/when_exe/locales/akt.rb +176 -0
- data/lib/when_exe/locales/ar.rb +2 -2
- data/lib/when_exe/locales/{locales.rb → autoload.rb} +6 -2
- data/lib/when_exe/locales/az.rb +2 -2
- data/lib/when_exe/locales/bg.rb +2 -2
- data/lib/when_exe/locales/bn.rb +2 -2
- data/lib/when_exe/locales/bs.rb +2 -2
- data/lib/when_exe/locales/ca.rb +2 -2
- data/lib/when_exe/locales/cs.rb +2 -2
- data/lib/when_exe/locales/cy.rb +2 -2
- data/lib/when_exe/locales/da.rb +2 -2
- data/lib/when_exe/locales/de.rb +2 -2
- data/lib/when_exe/locales/de_AT.rb +2 -2
- data/lib/when_exe/locales/de_CH.rb +2 -2
- data/lib/when_exe/locales/el.rb +2 -2
- data/lib/when_exe/locales/en.rb +2 -2
- data/lib/when_exe/locales/en_AU.rb +2 -2
- data/lib/when_exe/locales/en_CA.rb +2 -2
- data/lib/when_exe/locales/en_GB.rb +2 -2
- data/lib/when_exe/locales/en_IE.rb +2 -2
- data/lib/when_exe/locales/en_IN.rb +3 -3
- data/lib/when_exe/locales/en_NZ.rb +2 -2
- data/lib/when_exe/locales/en_US.rb +2 -2
- data/lib/when_exe/locales/en_ZA.rb +88 -0
- data/lib/when_exe/locales/encoding_conversion.rb +126 -0
- data/lib/when_exe/locales/eo.rb +2 -2
- data/lib/when_exe/locales/es.rb +2 -2
- data/lib/when_exe/locales/es_419.rb +2 -2
- data/lib/when_exe/locales/es_AR.rb +2 -2
- data/lib/when_exe/locales/es_CL.rb +2 -2
- data/lib/when_exe/locales/es_CO.rb +2 -2
- data/lib/when_exe/locales/es_CR.rb +2 -2
- data/lib/when_exe/locales/es_EC.rb +2 -2
- data/lib/when_exe/locales/es_MX.rb +2 -2
- data/lib/when_exe/locales/es_PA.rb +2 -2
- data/lib/when_exe/locales/es_PE.rb +2 -2
- data/lib/when_exe/locales/es_US.rb +84 -0
- data/lib/when_exe/locales/es_VE.rb +2 -2
- data/lib/when_exe/locales/et.rb +2 -2
- data/lib/when_exe/locales/eu.rb +2 -2
- data/lib/when_exe/locales/fa.rb +2 -2
- data/lib/when_exe/locales/fi.rb +3 -3
- data/lib/when_exe/locales/fr.rb +2 -2
- data/lib/when_exe/locales/fr_CA.rb +2 -2
- data/lib/when_exe/locales/fr_CH.rb +2 -2
- data/lib/when_exe/locales/gl.rb +2 -2
- data/lib/when_exe/locales/he.rb +3 -3
- data/lib/when_exe/locales/hi.rb +2 -2
- data/lib/when_exe/locales/hi_IN.rb +2 -2
- data/lib/when_exe/locales/hr.rb +2 -2
- data/lib/when_exe/locales/hu.rb +6 -5
- data/lib/when_exe/locales/iast.rb +90 -0
- data/lib/when_exe/locales/id.rb +2 -2
- data/lib/when_exe/locales/is.rb +2 -2
- data/lib/when_exe/locales/it.rb +2 -2
- data/lib/when_exe/locales/it_CH.rb +2 -2
- data/lib/when_exe/locales/ja.rb +2 -2
- data/lib/when_exe/locales/kn.rb +2 -2
- data/lib/when_exe/locales/ko.rb +2 -2
- data/lib/when_exe/locales/links.rb +3 -3
- data/lib/when_exe/locales/lo.rb +2 -2
- data/lib/when_exe/{parts → locales}/locale.rb +77 -49
- data/lib/when_exe/locales/lt.rb +6 -2
- data/lib/when_exe/locales/lv.rb +2 -2
- data/lib/when_exe/locales/mk.rb +2 -2
- data/lib/when_exe/locales/mn.rb +2 -2
- data/lib/when_exe/locales/ms.rb +2 -2
- data/lib/when_exe/locales/nb.rb +2 -2
- data/lib/when_exe/locales/ne.rb +2 -2
- data/lib/when_exe/locales/nl.rb +2 -2
- data/lib/when_exe/locales/nn.rb +2 -2
- data/lib/when_exe/locales/or.rb +2 -2
- data/lib/when_exe/locales/pl.rb +2 -2
- data/lib/when_exe/locales/pt.rb +2 -2
- data/lib/when_exe/locales/pt_BR.rb +2 -2
- data/lib/when_exe/locales/rm.rb +2 -2
- data/lib/when_exe/locales/ro.rb +2 -2
- data/lib/when_exe/locales/ru.rb +2 -2
- data/lib/when_exe/locales/sk.rb +2 -2
- data/lib/when_exe/locales/sl.rb +2 -2
- data/lib/when_exe/locales/sr.rb +2 -2
- data/lib/when_exe/locales/sv.rb +2 -2
- data/lib/when_exe/locales/sw.rb +2 -2
- data/lib/when_exe/locales/ta.rb +95 -0
- data/lib/when_exe/locales/th.rb +2 -2
- data/lib/when_exe/locales/tl.rb +3 -3
- data/lib/when_exe/locales/tr.rb +2 -2
- data/lib/when_exe/locales/transliteration_table.rb +62 -0
- data/lib/when_exe/locales/uk.rb +15 -15
- data/lib/when_exe/locales/ur.rb +2 -2
- data/lib/when_exe/locales/uz.rb +2 -2
- data/lib/when_exe/locales/vi.rb +2 -2
- data/lib/when_exe/locales/wo.rb +2 -2
- data/lib/when_exe/locales/zh_CN.rb +2 -2
- data/lib/when_exe/locales/zh_HK.rb +15 -15
- data/lib/when_exe/locales/zh_TW.rb +2 -2
- data/lib/when_exe/locales/zh_YUE.rb +77 -0
- data/lib/when_exe/mini_application.rb +22 -12
- data/lib/when_exe/parts/geometric_complex.rb +16 -1
- data/lib/when_exe/parts/method_cash.rb +184 -238
- data/lib/when_exe/parts/resource.rb +65 -16
- data/lib/when_exe/region/armenian.rb +56 -0
- data/lib/when_exe/region/bahai.rb +13 -13
- data/lib/when_exe/region/balinese.rb +33 -35
- data/lib/when_exe/region/chinese.rb +82 -78
- data/lib/when_exe/region/{chinese_calendar.rb → chinese/calendars.rb} +59 -40
- data/lib/when_exe/region/{chinese_epoch.rb → chinese/epochs.rb} +3 -4
- data/lib/when_exe/region/{chinese_twin.rb → chinese/twins.rb} +48 -51
- data/lib/when_exe/region/christian.rb +236 -127
- data/lib/when_exe/region/coptic.rb +9 -10
- data/lib/when_exe/region/dee.rb +48 -0
- data/lib/when_exe/region/discordian.rb +225 -0
- data/lib/when_exe/region/far_east.rb +2 -6
- data/lib/when_exe/region/french.rb +7 -17
- data/lib/when_exe/region/geologicalage.rb +0 -1
- data/lib/when_exe/region/goddess.rb +58 -0
- data/lib/when_exe/region/indian.rb +323 -231
- data/lib/when_exe/region/iranian.rb +159 -22
- data/lib/when_exe/region/islamic.rb +7 -9
- data/lib/when_exe/region/japanese.rb +14 -803
- data/lib/when_exe/region/japanese/calendars.rb +397 -0
- data/lib/when_exe/region/japanese/epochs.rb +426 -0
- data/lib/when_exe/region/{nihon_shoki.rb → japanese/nihon_shoki.rb} +0 -2
- data/lib/when_exe/region/{japanese_notes.rb → japanese/notes.rb} +179 -150
- data/lib/when_exe/region/japanese/residues.rb +1306 -0
- data/lib/when_exe/region/{japanese_twin.rb → japanese/twins.rb} +12 -15
- data/lib/when_exe/region/javanese.rb +16 -14
- data/lib/when_exe/region/jewish.rb +8 -9
- data/lib/when_exe/region/korean.rb +146 -35
- data/lib/when_exe/region/m17n.rb +8 -10
- data/lib/when_exe/region/martian.rb +44 -16
- data/lib/when_exe/region/mayan.rb +12 -10
- data/lib/when_exe/region/pope.rb +0 -1
- data/lib/when_exe/region/residue.rb +4 -5
- data/lib/when_exe/region/roman.rb +20 -24
- data/lib/when_exe/region/ryukyu.rb +3 -4
- data/lib/when_exe/region/shire.rb +97 -94
- data/lib/when_exe/region/symmetry.rb +50 -0
- data/lib/when_exe/region/thai.rb +164 -56
- data/lib/when_exe/region/tibetan.rb +86 -86
- data/lib/when_exe/region/vietnamese.rb +9 -12
- data/lib/when_exe/region/weekdate.rb +80 -0
- data/lib/when_exe/region/world.rb +65 -70
- data/lib/when_exe/region/yerm.rb +98 -0
- data/lib/when_exe/region/zoroastrian.rb +203 -0
- data/lib/when_exe/timestandard.rb +4 -4
- data/lib/when_exe/tmobjects.rb +1 -3
- data/lib/when_exe/tmposition.rb +13 -12
- data/lib/when_exe/tmreference.rb +11 -10
- data/lib/when_exe/version.rb +1 -1
- data/link_to_online_documents +3 -3
- data/test/examples/Residue.m17n +1 -1
- data/test/examples/Terms.m17n +1 -1
- data/test/test.rb +2 -1
- data/test/test/basictypes.rb +18 -2
- data/test/test/calendarnote.rb +1 -1
- data/test/test/calendartypes.rb +1 -1
- data/test/test/coordinates.rb +7 -7
- data/test/test/{region → ephemeris}/moon.rb +0 -0
- data/test/test/{region → ephemeris}/planets.rb +0 -0
- data/test/test/{region → ephemeris}/sun.rb +0 -0
- data/test/test/parts.rb +8 -13
- data/test/test/region/christian.rb +245 -0
- data/test/test/region/french.rb +16 -16
- data/test/test/region/iran.rb +34 -34
- data/test/test/region/japanese.rb +6 -4
- data/test/test/region/m17n.rb +8 -7
- data/test/test/region/mayan.rb +12 -12
- data/test/test/region/residue.rb +20 -4
- data/test/test/region/thai.rb +25 -3
- data/test/test/region/yerm.rb +146 -0
- metadata +39 -20
- data/lib/when_exe/region/japanese_residues.rb +0 -1212
- 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/
|
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}'], # 甲子
|
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=
|
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
|
13
|
-
|
14
|
-
'
|
15
|
-
'
|
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
|
-
['[
|
24
|
-
['[
|
25
|
-
['[
|
26
|
-
['[
|
27
|
-
['[
|
28
|
-
['[
|
29
|
-
['[
|
30
|
-
['[
|
31
|
-
['[
|
32
|
-
['[
|
33
|
-
['[
|
34
|
-
['[
|
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
|
-
['[
|
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
|
-
['[
|
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
|
46
|
-
|
47
|
-
'
|
48
|
-
'
|
49
|
-
'
|
50
|
-
['[
|
51
|
-
['[
|
52
|
-
['[
|
53
|
-
['[
|
54
|
-
['[
|
55
|
-
['[
|
56
|
-
['[
|
57
|
-
['[
|
58
|
-
['[
|
59
|
-
['[
|
60
|
-
['[
|
61
|
-
['[
|
62
|
-
['[
|
63
|
-
['[
|
64
|
-
['[
|
65
|
-
['[
|
66
|
-
['[
|
67
|
-
['[
|
68
|
-
['[
|
69
|
-
['[
|
70
|
-
['[
|
71
|
-
['[
|
72
|
-
['[
|
73
|
-
['[
|
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
|
-
|
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:[
|
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]¬e=
|
29
|
+
"Calendar Epoch", "989-09-01^Julian?border=[-1,9,1]¬e=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
|
-
# @
|
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
|
-
# @
|
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
|
-
# @
|
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
|
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 ||=
|
136
|
+
@label ||= 'Christian::Julian'
|
147
137
|
super
|
148
138
|
end
|
149
139
|
end
|
150
140
|
|
151
141
|
#
|
152
|
-
#
|
142
|
+
# Swedish Calendar
|
153
143
|
#
|
154
|
-
class
|
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
|
-
# @
|
185
|
+
# @see When::CalendarTypes::TableBased#_coordinates_to_number
|
159
186
|
#
|
160
|
-
|
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
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
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
|
-
|
171
|
-
|
172
|
-
|
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
|
-
# @
|
233
|
+
# @see When::CalendarTypes::TableBased#_coordinates_to_number
|
175
234
|
#
|
176
235
|
def _coordinates_to_number(y,m,d)
|
177
|
-
|
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
|
-
# @
|
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 +
|
244
|
+
super(jdn + _diff_from_century(_century_from_jdn(jdn)))
|
192
245
|
end
|
193
246
|
|
194
247
|
# 暦要素数
|
195
248
|
#
|
196
|
-
# @
|
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
|
208
|
-
|
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
|
-
|
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 ||=
|
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
|
-
# @
|
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 =
|
271
|
-
jdn >= @reform_jdn ? jdn : @
|
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
|
-
# @
|
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 =
|
389
|
+
date = @new._number_to_coordinates(jdn)
|
286
390
|
else
|
287
|
-
date = @
|
288
|
-
date[0] -= @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
|
-
# @
|
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
|
-
|
312
|
-
@
|
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 ?
|
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
|
-
# @
|
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
|
442
|
+
@label ||= 'Christian::Civil'
|
338
443
|
|
339
444
|
# 前後の暦法
|
340
|
-
@
|
341
|
-
|
342
|
-
@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 =
|
461
|
+
@reform_jdn = @new._coordinates_to_number(*@reform_date)
|
357
462
|
else
|
358
|
-
@reform_jdn ||=
|
463
|
+
@reform_jdn ||= [@old.class::DefaultReformDate, @new.class::DefaultReformDate].max
|
359
464
|
@reform_jdn = @reform_jdn.to_i
|
360
|
-
@reform_date =
|
465
|
+
@reform_date = @new._number_to_coordinates(@reform_jdn)
|
361
466
|
end
|
362
|
-
last_date
|
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],
|
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
|
369
|
-
|
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,
|
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,
|
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
|
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
|
-
|
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::
|
666
|
+
# @param [When::TM::CalDate] base (not used)
|
558
667
|
#
|
559
668
|
# @return [When::Coordinates::Residue] 七曜
|
560
669
|
#
|
561
|
-
def week(date,
|
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
|
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
|
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::
|
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
|
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
|
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
|
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
|
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
|
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)
|