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.
- 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
@@ -0,0 +1,50 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
=begin
|
3
|
+
Copyright (C) 2011-2014 Takashi SUGA
|
4
|
+
|
5
|
+
You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
|
6
|
+
=end
|
7
|
+
|
8
|
+
module When
|
9
|
+
|
10
|
+
class BasicTypes::M17n
|
11
|
+
|
12
|
+
Symmetry = [self, [
|
13
|
+
"locale:[=en:, ja]",
|
14
|
+
"names:[Symmetry=]",
|
15
|
+
"[Sym454=en:Symmetry454, 対称454暦=]",
|
16
|
+
"[Sym010=http://individual.utoronto.ca/kalendis/classic.htm, 対称010暦=]"
|
17
|
+
]]
|
18
|
+
end
|
19
|
+
|
20
|
+
module CalendarTypes
|
21
|
+
|
22
|
+
_pattern = (0...293).to_a.map {|year| (52 * year + 146) % 293 < 52 ? 371 : 364}
|
23
|
+
|
24
|
+
#
|
25
|
+
# Symmetry 454 Calendar
|
26
|
+
#
|
27
|
+
Sym454 = [CyclicTableBased, {
|
28
|
+
'label' => 'Symmetry::Sym454',
|
29
|
+
'origin_of_LSC' => 1721062,
|
30
|
+
'rule_table' => {
|
31
|
+
'T' => {'Rule' =>_pattern},
|
32
|
+
364 => {'Length'=>[28,35,28] * 4},
|
33
|
+
371 => {'Length'=>[28,35,28] * 3 + [28,35,35]}
|
34
|
+
}
|
35
|
+
}]
|
36
|
+
|
37
|
+
#
|
38
|
+
# Symmetry 010 Calendar
|
39
|
+
#
|
40
|
+
Sym010 = [CyclicTableBased, {
|
41
|
+
'label' => 'Symmetry::Sym010',
|
42
|
+
'origin_of_LSC' => 1721062,
|
43
|
+
'rule_table' => {
|
44
|
+
'T' => {'Rule' =>_pattern},
|
45
|
+
364 => {'Length'=>[30,31,30] * 4},
|
46
|
+
371 => {'Length'=>[30,31,30] * 3 + [30,31,37]}
|
47
|
+
}
|
48
|
+
}]
|
49
|
+
end
|
50
|
+
end
|
data/lib/when_exe/region/thai.rb
CHANGED
@@ -8,23 +8,43 @@
|
|
8
8
|
module When
|
9
9
|
class BasicTypes::M17n
|
10
10
|
|
11
|
-
|
12
|
-
"namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
|
11
|
+
Thai = [self, [
|
13
12
|
"locale:[=en:, ja=ja:, alias]",
|
14
|
-
"names:[
|
15
|
-
"[ThaiLuniSolar=en:Thai_lunar_calendar, タイ太陰太陽暦=ja:%%<チャントラカティ>]"
|
13
|
+
"names:[Thai=]",
|
14
|
+
"[ThaiLuniSolar=en:Thai_lunar_calendar, タイ太陰太陽暦=ja:%%<チャントラカティ>]",
|
15
|
+
|
16
|
+
[self,
|
17
|
+
"names:[IntercalaryMonth=en:Intercalation, 閏月]",
|
18
|
+
"[%s Śuklapakṣa=, %s 白分=, _IAST_]",
|
19
|
+
"[%s Kṛṣṇapakṣa=, %s 黒分=, _IAST_]",
|
20
|
+
"[adhika %s Śuklapakṣa=, 閏%s 白分=, _IAST_]",
|
21
|
+
"[adhika %s Kṛṣṇapakṣa=, 閏%s 黒分=, _IAST_]"
|
22
|
+
],
|
23
|
+
|
24
|
+
[self,
|
25
|
+
"names:[LunarMonth=, 太陰月=ja:%%<月_(暦)>]",
|
26
|
+
"[Mārgaśīra=en:Margashirsha, マールガシールシャ=, _IAST_]",
|
27
|
+
"[Pauṣa=en:Pausha, パウシャ=, _IAST_]",
|
28
|
+
"[Māgha=en:Maagha, マーガ=, _IAST_]",
|
29
|
+
"[Phālguna=en:Phalguna, パールグナ=, _IAST_]",
|
30
|
+
"[Caitra=en:Chaitra, チャイトラ=, _IAST_]",
|
31
|
+
"[Vaiśākha=en:Vaisakha, ヴァイシャーカ=, _IAST_]",
|
32
|
+
"[Jyaiṣṭha=en:Jyeshta, ジャイシュタ=, _IAST_]",
|
33
|
+
"[Āṣāḍha=en:Aashaadha, アーシャーダ=, _IAST_]",
|
34
|
+
"[Śrāvaṇa=en:Shraavana, シュラーヴァナ=, _IAST_]",
|
35
|
+
"[Bhādrapada=en:Bhadrapada, バードラパダ=, _IAST_]",
|
36
|
+
"[Āśvina=en:Ashwin, アーシュヴィナ=, _IAST_]",
|
37
|
+
"[Kārttika=en:Kartika_(month), カールッティカ=, _IAST_]"
|
38
|
+
]
|
16
39
|
]]
|
17
40
|
end
|
18
41
|
|
19
42
|
module CalendarTypes
|
20
43
|
|
21
44
|
#
|
22
|
-
#
|
45
|
+
# ソンクラーンとタイ暦の暦定数
|
23
46
|
#
|
24
|
-
|
25
|
-
|
26
|
-
NormalIDs = '1,1<,2,2<,3,3<,4,4<,5,5<,6,6<,7,7<,8,8<,9,9<,10,10<,11,11<,12,12<'
|
27
|
-
LeapIDs = '1,1<,2,2<,3,3<,4,4<,5,5<,6,6<,7,7<,8,8<,9&,9*,9,9<,10,10<,11,11<,12,12<'
|
47
|
+
module Songkran
|
28
48
|
|
29
49
|
# ソンクラーン - 太陽の白羊宮入り
|
30
50
|
#
|
@@ -37,14 +57,56 @@ module When
|
|
37
57
|
return @origin_of_LSC - 1 + e['H'][0]
|
38
58
|
end
|
39
59
|
|
60
|
+
# y で指定した年の暦定数を返します。
|
61
|
+
#
|
62
|
+
# @param [Integer] y 年
|
63
|
+
#
|
64
|
+
# @return [Hash]
|
65
|
+
#
|
66
|
+
def _eph(y) # C
|
67
|
+
h = (y+4).divmod(9)[0] # y
|
68
|
+
h = (y-h).divmod(3)[0] # z
|
69
|
+
h = (y+1-h).divmod(2)[0] # r (2 => h?)
|
70
|
+
h = (36525876*y+149049-h).divmod(100000) # s
|
71
|
+
a = (h[0]*11+633-((h[0]+7368).divmod(8878))[0]).divmod(692)
|
72
|
+
m = (h[0]+a[0]+0).divmod(30)
|
73
|
+
return {'H'=>h, 'A'=>a, 'M'=>m}
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
#
|
78
|
+
# The Calendar of Thai (Prototype)
|
79
|
+
#
|
80
|
+
class ThaiP < TableBased
|
81
|
+
|
82
|
+
include Lunar
|
83
|
+
include Songkran
|
84
|
+
|
85
|
+
# 月番号
|
86
|
+
_intercalary_month = When.Resource('_m:Thai::IntercalaryMonth::*')
|
87
|
+
Indices = [
|
88
|
+
When.Index('Thai::LunarMonth', {:branch=>{0 => _intercalary_month[0],
|
89
|
+
0.5 => _intercalary_month[1],
|
90
|
+
-1.5 => _intercalary_month[2],
|
91
|
+
-1 => _intercalary_month[3]}}),
|
92
|
+
When::Coordinates::DefaultDayIndex
|
93
|
+
]
|
94
|
+
|
95
|
+
# 月の大小と閏
|
96
|
+
_NormalIDs = '1,1<,2,2<,3,3<,4,4<,5,5<,6,6<,7,7<,8,8<,9,9<,10,10<,11,11<,12,12<'
|
97
|
+
_LeapIDs = '1,1<,2,2<,3,3<,4,4<,5,5<,6,6<,7,7<,8,8<,9&,9*,9,9<,10,10<,11,11<,12,12<'
|
98
|
+
RuleTable = {
|
99
|
+
354 => {'Length'=>[15,15,15,14]*6, 'IDs' => _NormalIDs},
|
100
|
+
355 => {'Length'=>[15,15,15,14]*3 + [15]*4 + [15,15,15,14]*2, 'IDs' => _NormalIDs},
|
101
|
+
384 => {'Length'=>[15,15,15,14]*4 + [15]*2 + [15,15,15,14]*2, 'IDs' => _LeapIDs}
|
102
|
+
}
|
103
|
+
|
40
104
|
private
|
41
105
|
|
42
|
-
# ThaiC+オブジェクトの性質定義を初期設定します。
|
43
|
-
#
|
44
106
|
# オブジェクトの正規化
|
45
107
|
# @private
|
46
108
|
def _normalize(args=[], options={})
|
47
|
-
@label ||=
|
109
|
+
@label ||= 'Thai::ThaiLuniSolar'
|
48
110
|
|
49
111
|
Rational
|
50
112
|
@mean_month ||= 29 + Rational( 373, 703)
|
@@ -54,24 +116,8 @@ module When
|
|
54
116
|
@origin_of_LSC ||= 1954168
|
55
117
|
@origin_of_MSC = @origin_of_MSC.to_i
|
56
118
|
@origin_of_LSC = @origin_of_LSC.to_i
|
57
|
-
|
58
|
-
|
59
|
-
@indices ||= [
|
60
|
-
Coordinates::Index.new({:branch=>{0 => intercalary_month[0],
|
61
|
-
0.5 => intercalary_month[1],
|
62
|
-
-1.5 => intercalary_month[2],
|
63
|
-
-1 => intercalary_month[3]},
|
64
|
-
:trunk =>When.Resource('_m:IndianTerms::LunarMonth::*')}),
|
65
|
-
Coordinates::DefaultDayIndex
|
66
|
-
]
|
67
|
-
@rule_table ||= {
|
68
|
-
354 => {'Length'=>[15,15,15,14]*6, 'IDs' => NormalIDs},
|
69
|
-
355 => {'Length'=>[15,15,15,14]*3 + [15]*4 + [15,15,15,14]*2, 'IDs' => NormalIDs},
|
70
|
-
356 => {'Length'=>[15,15,15,14]*3 + [15]*7 + [14] + [15]*4, 'IDs' => NormalIDs},
|
71
|
-
383 => {'Length'=>[15,14,15,15]*6 + [15,14], 'IDs' => LeapIDs},
|
72
|
-
384 => {'Length'=>[15,15,15,14]*4 + [15]*2 + [15,15,15,14]*2, 'IDs' => LeapIDs}
|
73
|
-
}
|
74
|
-
|
119
|
+
@indices ||= Indices
|
120
|
+
@rule_table ||= RuleTable
|
75
121
|
super
|
76
122
|
end
|
77
123
|
|
@@ -85,26 +131,13 @@ module When
|
|
85
131
|
y = +date[0]
|
86
132
|
e0 = _thai(y, 0)[0]
|
87
133
|
e1 = _thai(y+1,0)[0]
|
88
|
-
|
134
|
+
case e1['T']-e0['T']
|
135
|
+
when 353,383 ; e0['T'] -= 1
|
136
|
+
when 385 ; e0['T'] += 1
|
137
|
+
end
|
89
138
|
return @origin_of_LSC - 1 + e0['T'] - 30*3 - 29*2
|
90
139
|
end
|
91
140
|
|
92
|
-
# y で指定した年の暦定数を返します。
|
93
|
-
#
|
94
|
-
# @param [Integer] y 年
|
95
|
-
#
|
96
|
-
# @return [Hash]
|
97
|
-
#
|
98
|
-
def _eph(y) # C
|
99
|
-
h = (y+4).divmod(9)[0] # y
|
100
|
-
h = (y-h).divmod(3)[0] # z
|
101
|
-
h = (y+1-h).divmod(2)[0] # r (2 => h?)
|
102
|
-
h = (36525876*y+149049-h).divmod(100000) # s
|
103
|
-
a = (h[0]*11+633-((h[0]+7368).divmod(8878))[0]).divmod(692)
|
104
|
-
m = (h[0]+a[0]+0).divmod(30)
|
105
|
-
return {'H'=>h, 'A'=>a, 'M'=>m}
|
106
|
-
end
|
107
|
-
|
108
141
|
# y で指定した年の平閏、8月の大小を判定します。
|
109
142
|
#
|
110
143
|
# @param [Integer] y 年
|
@@ -137,27 +170,102 @@ module When
|
|
137
170
|
end
|
138
171
|
end
|
139
172
|
|
173
|
+
#
|
174
|
+
# The Calendar of Thai people in China (Calculation)
|
175
|
+
#
|
176
|
+
class ThaiC < ThaiP
|
177
|
+
|
178
|
+
# オブジェクトの正規化
|
179
|
+
# @private
|
180
|
+
def _normalize(args=[], options={})
|
181
|
+
super
|
182
|
+
@thoreshold = (@mean_month * 13) % 1
|
183
|
+
@eoch_new_moon = (@origin_of_LSC - 18.90409 + 12 * @mean_month / 19)
|
184
|
+
end
|
185
|
+
|
186
|
+
# 年初の通日
|
187
|
+
#
|
188
|
+
# @param [Array<Numeric>] date ( 年 )
|
189
|
+
#
|
190
|
+
# @return [Integer] 年初の通日
|
191
|
+
#
|
192
|
+
def _sdn_(date)
|
193
|
+
year = +date[0]
|
194
|
+
prev = _meton(year-1)
|
195
|
+
this = _meton(year)
|
196
|
+
this += 1 if this.floor - prev.floor > 360 && this % 1 > @thoreshold
|
197
|
+
this.floor
|
198
|
+
end
|
199
|
+
|
200
|
+
private
|
201
|
+
|
202
|
+
def _meton(year)
|
203
|
+
(((year + 9) * 235 / 19) - 111) * @mean_month + @eoch_new_moon
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
#
|
208
|
+
# The Calendar of Thai people in China (Table based)
|
209
|
+
#
|
210
|
+
class ThaiT < CyclicTableBased
|
211
|
+
|
212
|
+
include Lunar
|
213
|
+
include Songkran
|
214
|
+
|
215
|
+
Pattern = %w(
|
216
|
+
B A C A C B A C A B C A A C B C A A C B A C A C B A C A A C
|
217
|
+
B A C A C A B C A A C B C A A C B A C A C B A C A B C A A C
|
218
|
+
B C A A C B A C A C B A C A B C A A C A C B A C A B C A A C
|
219
|
+
A C B B C A A C A C A A C B A C A B C A C A B C A A C B C A
|
220
|
+
A C B A C A A C B C A A C B A C A C B A C A A C B A C A C B
|
221
|
+
A C A B C A C A B C A A C A B C A C A B C A A C B C A A C B
|
222
|
+
A C A A C B C A A C B A C A C B A C A A C B A C A C B A C A)
|
223
|
+
|
224
|
+
# オブジェクトの正規化
|
225
|
+
# @private
|
226
|
+
def _normalize(args=[], options={})
|
227
|
+
@origin_of_LSC = 2393198
|
228
|
+
@origin_of_MSC = 1202
|
229
|
+
@epoch_in_CE = 1840
|
230
|
+
@indices = ThaiP::Indices
|
231
|
+
pattern = Pattern.dup
|
232
|
+
if @patch
|
233
|
+
@patch.scan(/\d+[ABC]/i) do |patch|
|
234
|
+
pattern[patch[0..-2].to_i-@epoch_in_CE] = patch[-1..-1].upcase
|
235
|
+
end
|
236
|
+
end
|
237
|
+
@rule_table = {
|
238
|
+
'T' => {'Rule' => pattern},
|
239
|
+
'A' => {'Rule' => [354]},
|
240
|
+
'B' => {'Rule' => [355]},
|
241
|
+
'C' => {'Rule' => [384]}}.merge(ThaiP::RuleTable)
|
242
|
+
super
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
140
246
|
#
|
141
247
|
# The Calendar of central Thailand
|
142
248
|
#
|
143
|
-
class
|
249
|
+
class Thai < ThaiP
|
144
250
|
|
251
|
+
# 年の朔閏パターン
|
145
252
|
YEAR_TYPE = {'A'=>354, 'B'=>355, 'C'=>384, 'D'=>384, 'E'=>384}
|
146
253
|
|
147
|
-
|
148
|
-
|
254
|
+
# 月の大小と閏
|
255
|
+
_NormalIDs = '1,1<,2,2<,3,3<,4,4<,5,5<,6,6<,7,7<,8,8<,9,9<,10,10<,11,11<,12,12<'
|
256
|
+
_LeapIDs = '1,1<,2,2<,3,3<,4,4<,5,5<,6,6<,7,7<,8&,8*,8,8<,9,9<,10,10<,11,11<,12,12<'
|
257
|
+
RuleTable = {
|
258
|
+
354 => {'Length'=>[15,14,15,15]*6, 'IDs' => _NormalIDs},
|
259
|
+
355 => {'Length'=>[15,14,15,15]*3 + [15]*4 + [15,14,15,15]*2, 'IDs' => _NormalIDs},
|
260
|
+
384 => {'Length'=>[15,14,15,15]*4 + [15]*2 + [15,14,15,15]*2, 'IDs' => _LeapIDs }
|
261
|
+
}
|
149
262
|
|
150
263
|
private
|
151
264
|
|
152
265
|
# オブジェクトの正規化
|
153
266
|
#
|
154
267
|
def _normalize(args=[], options={})
|
155
|
-
@rule_table ||=
|
156
|
-
354 => {'Length'=>[15,14,15,15]*6, 'IDs' => NormalIDs},
|
157
|
-
355 => {'Length'=>[15,14,15,15]*3 + [15]*4 + [15,14,15,15]*2, 'IDs' => NormalIDs},
|
158
|
-
384 => {'Length'=>[15,14,15,15]*4 + [15]*2 + [15,14,15,15]*2, 'IDs' => LeapIDs }
|
159
|
-
}
|
160
|
-
|
268
|
+
@rule_table ||= RuleTable
|
161
269
|
super
|
162
270
|
end
|
163
271
|
|
@@ -8,10 +8,9 @@
|
|
8
8
|
module When
|
9
9
|
class BasicTypes::M17n
|
10
10
|
|
11
|
-
|
12
|
-
"namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
|
11
|
+
Tibetan = [self, [
|
13
12
|
"locale:[=en:, ja=ja:, alias]",
|
14
|
-
"names:[
|
13
|
+
"names:[Tibetan=]",
|
15
14
|
"[Tibetan=en:Tibetan_calendar, 時輪暦=ja:%%<チベット暦>]",
|
16
15
|
|
17
16
|
[self,
|
@@ -44,79 +43,82 @@ module When
|
|
44
43
|
]]
|
45
44
|
end
|
46
45
|
|
47
|
-
module
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
46
|
+
module Coordinates
|
47
|
+
|
48
|
+
# 六十干支
|
49
|
+
Tibetan = [When::BasicTypes::M17n, [
|
50
|
+
"locale:[=en:, ja=ja:, alias]",
|
51
|
+
"names:[Tibetan]",
|
52
|
+
|
53
|
+
[StemBranch,
|
54
|
+
"label:[Stem-Branch, *干支]", "divisor:60", "day:11", "year:4",
|
55
|
+
[StemBranch, "label:[Wood-Rat=, *木男鼠=]", "remainder: 0"],
|
56
|
+
[StemBranch, "label:[Wood-Ox=, *木女牛=]", "remainder: 1"],
|
57
|
+
[StemBranch, "label:[Fire-Tiger=, *火男虎=]", "remainder: 2"],
|
58
|
+
[StemBranch, "label:[Fire-Rabbit=, *火女兎=]", "remainder: 3"],
|
59
|
+
[StemBranch, "label:[Earth-Dragon=, *土男龍=]", "remainder: 4"],
|
60
|
+
[StemBranch, "label:[Earth-Snake=, *土女蛇=]", "remainder: 5"],
|
61
|
+
[StemBranch, "label:[Iron-Horse=, *金男馬=]", "remainder: 6"],
|
62
|
+
[StemBranch, "label:[Iron-Goat=, *金女羊=]", "remainder: 7"],
|
63
|
+
[StemBranch, "label:[Water-Monkey=, *水男猴=]", "remainder: 8"],
|
64
|
+
[StemBranch, "label:[Water-Rooster=, *水女鷄=]", "remainder: 9"],
|
65
|
+
[StemBranch, "label:[Wood-Dog=, *木男狗=]", "remainder:10"],
|
66
|
+
[StemBranch, "label:[Wood-Pig=, *木女猪=]", "remainder:11"],
|
67
|
+
[StemBranch, "label:[Fire-Rat=, *火男鼠=]", "remainder:12"],
|
68
|
+
[StemBranch, "label:[Fire-Ox=, *火女牛=]", "remainder:13"],
|
69
|
+
[StemBranch, "label:[Earth-Tiger=, *土男虎=]", "remainder:14"],
|
70
|
+
[StemBranch, "label:[Earth-Rabbit=, *土女兎=]", "remainder:15"],
|
71
|
+
[StemBranch, "label:[Iron-Dragon=, *金男龍=]", "remainder:16"],
|
72
|
+
[StemBranch, "label:[Iron-Snake=, *金女蛇=]", "remainder:17"],
|
73
|
+
[StemBranch, "label:[Water-Horse=, *水男馬=]", "remainder:18"],
|
74
|
+
[StemBranch, "label:[Water-Goat=, *水女羊=]", "remainder:19"],
|
75
|
+
[StemBranch, "label:[Wood-Monkey=, *木男猴=]", "remainder:20"],
|
76
|
+
[StemBranch, "label:[Wood-Rooster=, *木女鷄=]", "remainder:21"],
|
77
|
+
[StemBranch, "label:[Fire-Dog=, *火男狗=]", "remainder:22"],
|
78
|
+
[StemBranch, "label:[Fire-Pig=, *火女猪=]", "remainder:23"],
|
79
|
+
[StemBranch, "label:[Earth-Rat=, *土男鼠=]", "remainder:24"],
|
80
|
+
[StemBranch, "label:[Earth-Ox=, *土女牛=]", "remainder:25"],
|
81
|
+
[StemBranch, "label:[Iron-Tiger=, *金男虎=]", "remainder:26"],
|
82
|
+
[StemBranch, "label:[Iron-Rabbit=, *金女兎=]", "remainder:27"],
|
83
|
+
[StemBranch, "label:[Water-Dragon=, *水男龍=]", "remainder:28"],
|
84
|
+
[StemBranch, "label:[Water-Snake=, *水女蛇=]", "remainder:29"],
|
85
|
+
[StemBranch, "label:[Wood-Horse=, *木男馬=]", "remainder:30"],
|
86
|
+
[StemBranch, "label:[Wood-Goat=, *木女羊=]", "remainder:31"],
|
87
|
+
[StemBranch, "label:[Fire-Monkey=, *火男猴=]", "remainder:32"],
|
88
|
+
[StemBranch, "label:[Fire-Rooster=, *火女鷄=]", "remainder:33"],
|
89
|
+
[StemBranch, "label:[Earth-Dog=, *土男狗=]", "remainder:34"],
|
90
|
+
[StemBranch, "label:[Earth-Pig=, *土女猪=]", "remainder:35"],
|
91
|
+
[StemBranch, "label:[Iron-Rat=, *金男鼠=]", "remainder:36"],
|
92
|
+
[StemBranch, "label:[Iron-Ox=, *金女牛=]", "remainder:37"],
|
93
|
+
[StemBranch, "label:[Water-Tiger=, *水男虎=]", "remainder:38"],
|
94
|
+
[StemBranch, "label:[Water-Rabbit=, *水女兎=]", "remainder:39"],
|
95
|
+
[StemBranch, "label:[Wood-Dragon=, *木男龍=]", "remainder:40"],
|
96
|
+
[StemBranch, "label:[Wood-Snake=, *木女蛇=]", "remainder:41"],
|
97
|
+
[StemBranch, "label:[Fire-Horse=, *火男馬=]", "remainder:42"],
|
98
|
+
[StemBranch, "label:[Fire-Goat=, *火女羊=]", "remainder:43"],
|
99
|
+
[StemBranch, "label:[Earth-Monkey=, *土男猴=]", "remainder:44"],
|
100
|
+
[StemBranch, "label:[Earth-Rooster=, *土女鷄=]", "remainder:45"],
|
101
|
+
[StemBranch, "label:[Iron-Dog=, *金男狗=]", "remainder:46"],
|
102
|
+
[StemBranch, "label:[Iron-Pig=, *金女猪=]", "remainder:47"],
|
103
|
+
[StemBranch, "label:[Water-Rat=, *水男鼠=]", "remainder:48"],
|
104
|
+
[StemBranch, "label:[Water-Ox=, *水女牛=]", "remainder:49"],
|
105
|
+
[StemBranch, "label:[Wood-Tiger=, *木男虎=]", "remainder:50"],
|
106
|
+
[StemBranch, "label:[Wood-Rabbit=, *木女兎=]", "remainder:51"],
|
107
|
+
[StemBranch, "label:[Fire-Dragon=, *火男龍=]", "remainder:52"],
|
108
|
+
[StemBranch, "label:[Fire-Snake=, *火女蛇=]", "remainder:53"],
|
109
|
+
[StemBranch, "label:[Earth-Horse=, *土男馬=]", "remainder:54"],
|
110
|
+
[StemBranch, "label:[Earth-Goat=, *土女羊=]", "remainder:55"],
|
111
|
+
[StemBranch, "label:[Iron-Monkey=, *金男猴=]", "remainder:56"],
|
112
|
+
[StemBranch, "label:[Iron-Rooster=, *金女鷄=]", "remainder:57"],
|
113
|
+
[StemBranch, "label:[Water-Dog=, *水男狗=]", "remainder:58"],
|
114
|
+
[StemBranch, "label:[Water-Pig=, *水女猪=]", "remainder:59"]
|
115
|
+
]
|
116
|
+
]]
|
117
|
+
end
|
54
118
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
[StemBranch, "label:[Wood-Ox=, *木女牛=]", "remainder: 1"],
|
59
|
-
[StemBranch, "label:[Fire-Tiger=, *火男虎=]", "remainder: 2"],
|
60
|
-
[StemBranch, "label:[Fire-Rabbit=, *火女兎=]", "remainder: 3"],
|
61
|
-
[StemBranch, "label:[Earth-Dragon=, *土男龍=]", "remainder: 4"],
|
62
|
-
[StemBranch, "label:[Earth-Snake=, *土女蛇=]", "remainder: 5"],
|
63
|
-
[StemBranch, "label:[Iron-Horse=, *金男馬=]", "remainder: 6"],
|
64
|
-
[StemBranch, "label:[Iron-Goat=, *金女羊=]", "remainder: 7"],
|
65
|
-
[StemBranch, "label:[Water-Monkey=, *水男猴=]", "remainder: 8"],
|
66
|
-
[StemBranch, "label:[Water-Rooster=, *水女鷄=]", "remainder: 9"],
|
67
|
-
[StemBranch, "label:[Wood-Dog=, *木男狗=]", "remainder:10"],
|
68
|
-
[StemBranch, "label:[Wood-Pig=, *木女猪=]", "remainder:11"],
|
69
|
-
[StemBranch, "label:[Fire-Rat=, *火男鼠=]", "remainder:12"],
|
70
|
-
[StemBranch, "label:[Fire-Ox=, *火女牛=]", "remainder:13"],
|
71
|
-
[StemBranch, "label:[Earth-Tiger=, *土男虎=]", "remainder:14"],
|
72
|
-
[StemBranch, "label:[Earth-Rabbit=, *土女兎=]", "remainder:15"],
|
73
|
-
[StemBranch, "label:[Iron-Dragon=, *金男龍=]", "remainder:16"],
|
74
|
-
[StemBranch, "label:[Iron-Snake=, *金女蛇=]", "remainder:17"],
|
75
|
-
[StemBranch, "label:[Water-Horse=, *水男馬=]", "remainder:18"],
|
76
|
-
[StemBranch, "label:[Water-Goat=, *水女羊=]", "remainder:19"],
|
77
|
-
[StemBranch, "label:[Wood-Monkey=, *木男猴=]", "remainder:20"],
|
78
|
-
[StemBranch, "label:[Wood-Rooster=, *木女鷄=]", "remainder:21"],
|
79
|
-
[StemBranch, "label:[Fire-Dog=, *火男狗=]", "remainder:22"],
|
80
|
-
[StemBranch, "label:[Fire-Pig=, *火女猪=]", "remainder:23"],
|
81
|
-
[StemBranch, "label:[Earth-Rat=, *土男鼠=]", "remainder:24"],
|
82
|
-
[StemBranch, "label:[Earth-Ox=, *土女牛=]", "remainder:25"],
|
83
|
-
[StemBranch, "label:[Iron-Tiger=, *金男虎=]", "remainder:26"],
|
84
|
-
[StemBranch, "label:[Iron-Rabbit=, *金女兎=]", "remainder:27"],
|
85
|
-
[StemBranch, "label:[Water-Dragon=, *水男龍=]", "remainder:28"],
|
86
|
-
[StemBranch, "label:[Water-Snake=, *水女蛇=]", "remainder:29"],
|
87
|
-
[StemBranch, "label:[Wood-Horse=, *木男馬=]", "remainder:30"],
|
88
|
-
[StemBranch, "label:[Wood-Goat=, *木女羊=]", "remainder:31"],
|
89
|
-
[StemBranch, "label:[Fire-Monkey=, *火男猴=]", "remainder:32"],
|
90
|
-
[StemBranch, "label:[Fire-Rooster=, *火女鷄=]", "remainder:33"],
|
91
|
-
[StemBranch, "label:[Earth-Dog=, *土男狗=]", "remainder:34"],
|
92
|
-
[StemBranch, "label:[Earth-Pig=, *土女猪=]", "remainder:35"],
|
93
|
-
[StemBranch, "label:[Iron-Rat=, *金男鼠=]", "remainder:36"],
|
94
|
-
[StemBranch, "label:[Iron-Ox=, *金女牛=]", "remainder:37"],
|
95
|
-
[StemBranch, "label:[Water-Tiger=, *水男虎=]", "remainder:38"],
|
96
|
-
[StemBranch, "label:[Water-Rabbit=, *水女兎=]", "remainder:39"],
|
97
|
-
[StemBranch, "label:[Wood-Dragon=, *木男龍=]", "remainder:40"],
|
98
|
-
[StemBranch, "label:[Wood-Snake=, *木女蛇=]", "remainder:41"],
|
99
|
-
[StemBranch, "label:[Fire-Horse=, *火男馬=]", "remainder:42"],
|
100
|
-
[StemBranch, "label:[Fire-Goat=, *火女羊=]", "remainder:43"],
|
101
|
-
[StemBranch, "label:[Earth-Monkey=, *土男猴=]", "remainder:44"],
|
102
|
-
[StemBranch, "label:[Earth-Rooster=, *土女鷄=]", "remainder:45"],
|
103
|
-
[StemBranch, "label:[Iron-Dog=, *金男狗=]", "remainder:46"],
|
104
|
-
[StemBranch, "label:[Iron-Pig=, *金女猪=]", "remainder:47"],
|
105
|
-
[StemBranch, "label:[Water-Rat=, *水男鼠=]", "remainder:48"],
|
106
|
-
[StemBranch, "label:[Water-Ox=, *水女牛=]", "remainder:49"],
|
107
|
-
[StemBranch, "label:[Wood-Tiger=, *木男虎=]", "remainder:50"],
|
108
|
-
[StemBranch, "label:[Wood-Rabbit=, *木女兎=]", "remainder:51"],
|
109
|
-
[StemBranch, "label:[Fire-Dragon=, *火男龍=]", "remainder:52"],
|
110
|
-
[StemBranch, "label:[Fire-Snake=, *火女蛇=]", "remainder:53"],
|
111
|
-
[StemBranch, "label:[Earth-Horse=, *土男馬=]", "remainder:54"],
|
112
|
-
[StemBranch, "label:[Earth-Goat=, *土女羊=]", "remainder:55"],
|
113
|
-
[StemBranch, "label:[Iron-Monkey=, *金男猴=]", "remainder:56"],
|
114
|
-
[StemBranch, "label:[Iron-Rooster=, *金女鷄=]", "remainder:57"],
|
115
|
-
[StemBranch, "label:[Water-Dog=, *水男狗=]", "remainder:58"],
|
116
|
-
[StemBranch, "label:[Water-Pig=, *水女猪=]", "remainder:59"]
|
117
|
-
]
|
118
|
-
]]
|
119
|
-
end
|
119
|
+
class CalendarNote
|
120
|
+
Tibetan = [['Tibetan::干支'], ['_m:Calendar::Month'], ['Common::Week']]
|
121
|
+
end
|
120
122
|
|
121
123
|
module CalendarTypes
|
122
124
|
|
@@ -155,21 +157,19 @@ end
|
|
155
157
|
# @parameter = 太陽と月の位相計算用のテーブル
|
156
158
|
#
|
157
159
|
def _normalize(args=[], options={})
|
158
|
-
intercalary_month = When.Resource('_m:
|
159
|
-
intercalary_day = When.Resource('_m:
|
160
|
+
intercalary_month = When.Resource('_m:Tibetan::IntercalaryMonth::*')
|
161
|
+
intercalary_day = When.Resource('_m:Tibetan::IntercalaryDay::*')
|
160
162
|
@indices ||= @index_of_MSC && @index_of_MSC.to_i == 1 ?
|
161
163
|
[
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
Coordinates::Index.new({:branch=>{-2=>intercalary_day[0], -1=>intercalary_day[1]}})
|
164
|
+
When.Index({:unit=>60}),
|
165
|
+
When.Index('Tibetan::Month', {:branch=>{0=>intercalary_month[0], 1=>intercalary_month[1]}, :shift=>2}),
|
166
|
+
When.Index({:branch=>{-2=>intercalary_day[0], -1=>intercalary_day[1]}})
|
166
167
|
] :
|
167
168
|
[
|
168
|
-
|
169
|
-
|
170
|
-
Coordinates::Index.new({:branch=>{-2=>intercalary_day[0], -1=>intercalary_day[1]}})
|
169
|
+
When.Index('Tibetan::Month', {:branch=>{0=>intercalary_month[0], 1=>intercalary_month[1]}, :shift=>2}),
|
170
|
+
When.Index({:branch=>{-2=>intercalary_day[0], -1=>intercalary_day[1]}})
|
171
171
|
]
|
172
|
-
@label ||=
|
172
|
+
@label ||= 'Tibetan::Tibetan'
|
173
173
|
@epoch_in_CE ||= 0
|
174
174
|
@type ||= 1
|
175
175
|
@parameter = case @type.to_i
|
@@ -194,7 +194,7 @@ end
|
|
194
194
|
'A0'=>(22.0+28.0/126)
|
195
195
|
}
|
196
196
|
end
|
197
|
-
@note = '
|
197
|
+
@note = 'Tibetan'
|
198
198
|
super
|
199
199
|
end
|
200
200
|
|