when_exe 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +36 -33
  3. data/bin/locales.rb +1 -1
  4. data/bin/make_ttl.rb.config +1 -1
  5. data/lib/when_exe.rb +27 -16
  6. data/lib/when_exe/basictypes.rb +772 -771
  7. data/lib/when_exe/calendartypes.rb +1485 -1453
  8. data/lib/when_exe/coordinates.rb +5 -0
  9. data/lib/when_exe/core/compatibility.rb +1 -1
  10. data/lib/when_exe/core/duration.rb +147 -116
  11. data/lib/when_exe/core/extension.rb +499 -497
  12. data/lib/when_exe/ephemeris.rb +1952 -1951
  13. data/lib/when_exe/ephemeris/eclipse.rb +5 -4
  14. data/lib/when_exe/ephemeris/notes.rb +457 -421
  15. data/lib/when_exe/ephemeris/planets.rb +585 -585
  16. data/lib/when_exe/ephemeris/sun.rb +214 -214
  17. data/lib/when_exe/google_api.rb +153 -0
  18. data/lib/when_exe/icalendar.rb +1640 -1632
  19. data/lib/when_exe/inspect.rb +42 -20
  20. data/lib/when_exe/linkeddata.rb +28 -7
  21. data/lib/when_exe/locales/autoload.rb +2 -1
  22. data/lib/when_exe/locales/locale.rb +35 -15
  23. data/lib/when_exe/locales/zh.rb +77 -0
  24. data/lib/when_exe/mini_application.rb +3 -1
  25. data/lib/when_exe/{googlecalendar.rb → obsolete/googlecalendar.rb} +144 -144
  26. data/lib/when_exe/parts/enumerator.rb +498 -486
  27. data/lib/when_exe/parts/geometric_complex.rb +397 -397
  28. data/lib/when_exe/parts/timezone.rb +246 -241
  29. data/lib/when_exe/region/armenian.rb +55 -56
  30. data/lib/when_exe/region/babylonian.rb +406 -405
  31. data/lib/when_exe/region/bahai.rb +107 -106
  32. data/lib/when_exe/region/balinese.rb +624 -622
  33. data/lib/when_exe/region/chinese.rb +1071 -1026
  34. data/lib/when_exe/region/chinese/epochs.rb +28 -28
  35. data/lib/when_exe/region/chinese/notes.rb +219 -0
  36. data/lib/when_exe/region/chinese/twins.rb +803 -803
  37. data/lib/when_exe/region/christian.rb +21 -15
  38. data/lib/when_exe/region/coptic.rb +107 -106
  39. data/lib/when_exe/region/discordian.rb +218 -218
  40. data/lib/when_exe/region/east_asian.rb +1 -1
  41. data/lib/when_exe/region/french.rb +126 -56
  42. data/lib/when_exe/region/geologicalage.rb +639 -639
  43. data/lib/when_exe/region/goddess.rb +60 -58
  44. data/lib/when_exe/region/hanke_henry.rb +2 -2
  45. data/lib/when_exe/region/indian.rb +1225 -1222
  46. data/lib/when_exe/region/international_fixed.rb +96 -97
  47. data/lib/when_exe/region/iranian.rb +206 -203
  48. data/lib/when_exe/region/islamic.rb +102 -102
  49. data/lib/when_exe/region/japanese.rb +126 -71
  50. data/lib/when_exe/region/japanese/epochs.rb +426 -426
  51. data/lib/when_exe/region/japanese/notes.rb +101 -81
  52. data/lib/when_exe/region/japanese/residues.rb +1345 -1311
  53. data/lib/when_exe/region/japanese/twins.rb +225 -225
  54. data/lib/when_exe/region/japanese/weeks.rb +112 -112
  55. data/lib/when_exe/region/javanese.rb +230 -230
  56. data/lib/when_exe/region/jewish.rb +130 -131
  57. data/lib/when_exe/region/m17n.rb +114 -114
  58. data/lib/when_exe/region/martian.rb +258 -258
  59. data/lib/when_exe/region/mayan.rb +11 -8
  60. data/lib/when_exe/region/pax.rb +4 -5
  61. data/lib/when_exe/region/pope.rb +1 -1
  62. data/lib/when_exe/region/positivist.rb +100 -100
  63. data/lib/when_exe/region/residue.rb +162 -162
  64. data/lib/when_exe/region/roman.rb +333 -333
  65. data/lib/when_exe/region/{soviet.rb → russian.rb} +221 -209
  66. data/lib/when_exe/region/shire.rb +222 -223
  67. data/lib/when_exe/region/symmetry.rb +50 -50
  68. data/lib/when_exe/region/thai.rb +336 -336
  69. data/lib/when_exe/region/tibetan.rb +315 -316
  70. data/lib/when_exe/region/tranquility.rb +207 -208
  71. data/lib/when_exe/region/vanishing_leprechaun.rb +3 -1
  72. data/lib/when_exe/region/vietnamese.rb +449 -440
  73. data/lib/when_exe/region/weekdate.rb +80 -80
  74. data/lib/when_exe/region/world.rb +170 -171
  75. data/lib/when_exe/region/world_season.rb +89 -89
  76. data/lib/when_exe/region/yerm.rb +3 -3
  77. data/lib/when_exe/region/zoroastrian.rb +205 -205
  78. data/lib/when_exe/timestandard.rb +708 -707
  79. data/lib/when_exe/tmduration.rb +338 -338
  80. data/lib/when_exe/tmobjects.rb +1356 -1356
  81. data/lib/when_exe/tmposition.rb +66 -31
  82. data/lib/when_exe/version.rb +16 -2
  83. data/test/examples/Residue.m17n +83 -83
  84. data/test/examples/Terms.m17n +2 -2
  85. data/test/test.rb +2 -2
  86. data/test/test/google_api.rb +65 -0
  87. data/test/test/linkeddata.rb +1 -1
  88. data/test/test/{googlecalendar.rb → obsolete/googlecalendar.rb} +194 -194
  89. data/test/test/region/indian.rb +90 -85
  90. data/test/test/region/m17n.rb +7 -7
  91. data/test/test/region/mayan.rb +195 -195
  92. data/test/test/region/residue.rb +153 -153
  93. data/test/test/tmposition.rb +11 -1
  94. data/when_exe.gemspec +2 -2
  95. metadata +95 -8
  96. data/test/test.rb.config +0 -1
@@ -1,97 +1,96 @@
1
- # -*- coding: utf-8 -*-
2
- =begin
3
- Copyright (C) 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
- InternationalFixed = [self, [
13
- "locale:[=en:, ja=ja:, alias]",
14
- "names:[InternationalFixed=]",
15
- "[InternationalFixed=en:International_Fixed_Calendar, 国際固定暦]"
16
- ]]
17
- end
18
-
19
- #
20
- # InternationalFixed Week
21
- #
22
- class CalendarNote::InternationalFixedWeek < CalendarNote::Week
23
-
24
- #
25
- # InternationalFixed Note
26
- #
27
- Notes = [When::BasicTypes::M17n, [
28
- "locale:[=en:, ja=ja:, alias]",
29
- "names:[InternationalFixed]",
30
-
31
- # Notes for year ----------------------------
32
- [When::BasicTypes::M17n,
33
- "names:[year]"
34
- ],
35
-
36
- # Notes for month ----------------------------
37
- [When::BasicTypes::M17n,
38
- "names:[month]",
39
- [When::BasicTypes::M17n,
40
- "names:[Month]",
41
- "[January, 1月, /date/month_names/1] ",
42
- "[February, 2月, /date/month_names/2] ",
43
- "[March, 3月, /date/month_names/3] ",
44
- "[April, 4月, /date/month_names/4] ",
45
- "[May, 5月, /date/month_names/5] ",
46
- "[June, 6月, /date/month_names/6] ",
47
- "[Sol, 7] ",
48
- "[July, 8月, /date/month_names/7] ",
49
- "[August, 9月, /date/month_names/8] ",
50
- "[September,10月, /date/month_names/9] ",
51
- "[October, 11月, /date/month_names/10]",
52
- "[November, 12月, /date/month_names/11]",
53
- "[December, 13月, /date/month_names/12]"
54
- ]
55
- ],
56
-
57
- # Notes for day ----------------------------
58
- [When::BasicTypes::M17n,
59
- "names:[day]",
60
- [When::BasicTypes::M17n,
61
- "names:[Week]",
62
- [DayOfWeek, "label:[Sunday, 日曜日, /date/day_names/0]", {'delta'=> 7}],
63
- [DayOfWeek, "label:[Monday, 月曜日, /date/day_names/1]", {'delta'=> 7}],
64
- [DayOfWeek, "label:[Tuesday, 火曜日, /date/day_names/2]", {'delta'=> 7}],
65
- [DayOfWeek, "label:[Wednesday, 水曜日, /date/day_names/3]", {'delta'=> 7}],
66
- [DayOfWeek, "label:[Thursday, 木曜日, /date/day_names/4]", {'delta'=> 7}],
67
- [DayOfWeek, "label:[Friday, 金曜日, /date/day_names/5]", {'delta'=> 7}],
68
- [DayOfWeek, "label:[Saturday, 土曜日, /date/day_names/6]", {'delta'=> 7}],
69
- [DayOfWeek, "label:[OutOfWeek=, 週外日=]", {'delta'=>366}]
70
- ],
71
-
72
- "[Common_Week=]"
73
- ]
74
- ]]
75
-
76
- fixed_week_definitions
77
-
78
- end
79
-
80
- module CalendarTypes
81
- #
82
- # InternationalFixed calendar based on Gregorian calendar
83
- #
84
- InternationalFixed = [SolarYearTableBased, {
85
- 'label' => 'InternationalFixed::InternationalFixed',
86
- 'indices' => [
87
- When.Index('InternationalFixedWeekNotes::month::Month', {:unit =>13}),
88
- When::Coordinates::DefaultDayIndex
89
- ],
90
- 'rule_table' => {
91
- 365 => {'Length'=>[28]*12 + [29]},
92
- 366 => {'Length'=>[28]* 5 + [29] + [28] *6 + [29]}
93
- },
94
- 'note' => 'InternationalFixedWeek'
95
- }]
96
- end
97
- end
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2014-2015 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
+ InternationalFixed = [self, [
13
+ "locale:[=en:, ja=ja:, zh=zh:, alias]",
14
+ "names:[InternationalFixed=en:International_Fixed_Calendar, 国際固定暦, 国際固定曆=]"
15
+ ]]
16
+ end
17
+
18
+ #
19
+ # InternationalFixed Week
20
+ #
21
+ class CalendarNote::InternationalFixedWeek < CalendarNote::Week
22
+
23
+ #
24
+ # InternationalFixed Note
25
+ #
26
+ Notes = [When::BasicTypes::M17n, [
27
+ "locale:[=en:, ja=ja:, alias]",
28
+ "names:[InternationalFixed]",
29
+
30
+ # Notes for year ----------------------------
31
+ [When::BasicTypes::M17n,
32
+ "names:[note for year=, 年の暦注=, *year]"
33
+ ],
34
+
35
+ # Notes for month ----------------------------
36
+ [When::BasicTypes::M17n,
37
+ "names:[note for month=, 月の暦注=, *month]",
38
+ [When::BasicTypes::M17n,
39
+ "names:[month name=en:Month, 月の名前=ja:%%<月_(暦)>, zh:該月的名稱=, *alias:Month=]",
40
+ "[January, 1月, /date/month_names/1] ",
41
+ "[February, 2月, /date/month_names/2] ",
42
+ "[March, 3月, /date/month_names/3] ",
43
+ "[April, 4月, /date/month_names/4] ",
44
+ "[May, 5月, /date/month_names/5] ",
45
+ "[June, 6月, /date/month_names/6] ",
46
+ "[Sol, 7月 ] ",
47
+ "[July, 8月, /date/month_names/7] ",
48
+ "[August, 9月, /date/month_names/8] ",
49
+ "[September,10月, /date/month_names/9] ",
50
+ "[October, 11月, /date/month_names/10]",
51
+ "[November, 12月, /date/month_names/11]",
52
+ "[December, 13月, /date/month_names/12]"
53
+ ]
54
+ ],
55
+
56
+ # Notes for day ----------------------------
57
+ [When::BasicTypes::M17n,
58
+ "names:[note for day=, 日の暦注=, *day]",
59
+ [When::BasicTypes::M17n,
60
+ "names:[Week, 週, zh:星期]",
61
+ [DayOfWeek, "label:[Sunday, 日曜日, /date/day_names/0]", {'delta'=> 7}],
62
+ [DayOfWeek, "label:[Monday, 月曜日, /date/day_names/1]", {'delta'=> 7}],
63
+ [DayOfWeek, "label:[Tuesday, 火曜日, /date/day_names/2]", {'delta'=> 7}],
64
+ [DayOfWeek, "label:[Wednesday, 水曜日, /date/day_names/3]", {'delta'=> 7}],
65
+ [DayOfWeek, "label:[Thursday, 木曜日, /date/day_names/4]", {'delta'=> 7}],
66
+ [DayOfWeek, "label:[Friday, 金曜日, /date/day_names/5]", {'delta'=> 7}],
67
+ [DayOfWeek, "label:[Saturday, 土曜日, /date/day_names/6]", {'delta'=> 7}],
68
+ [DayOfWeek, "label:[OutOfWeek=, 週外日=]", {'delta'=>366}]
69
+ ],
70
+
71
+ "[Common_Week=]"
72
+ ]
73
+ ]]
74
+
75
+ fixed_week_definitions
76
+
77
+ end
78
+
79
+ module CalendarTypes
80
+ #
81
+ # InternationalFixed calendar based on Gregorian calendar
82
+ #
83
+ InternationalFixed = [SolarYearTableBased, {
84
+ 'label' => 'InternationalFixed',
85
+ 'indices' => [
86
+ When.Index('InternationalFixedWeekNotes::month::Month', {:unit =>13}),
87
+ When::Coordinates::DefaultDayIndex
88
+ ],
89
+ 'rule_table' => {
90
+ 365 => {'Length'=>[28]*12 + [29]},
91
+ 366 => {'Length'=>[28]* 5 + [29] + [28] *6 + [29]}
92
+ },
93
+ 'note' => 'InternationalFixedWeek'
94
+ }]
95
+ end
96
+ end
@@ -1,203 +1,206 @@
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
- class BasicTypes::M17n
10
-
11
- Iranian = [self, [
12
- "locale:[=en:, ja=ja:, ar=ar:, alias=ja:]",
13
- "names:[Iranian=]",
14
- "[SolarHijri=en:Solar_Hijri_calendar#Details_of_the_modern_calendar, ヘジラ太陽暦=ja:%%<イラン暦>]",
15
- "[SolarHijriAlgorithmic=en:Solar_Hijri_calendar#Solar_Hijri_algorithmic_calendar, ヘジラ太陽暦=ja:%%<イラン暦>]",
16
- "[Jalali=en:Jalali_calendar, ジャラーリー暦]",
17
- "[Borji=, ボルジ暦=]",
18
-
19
- [self,
20
- "names:[Month, 月=ja:%%<月_(暦)>]",
21
- "[Farvardīn=, ファルヴァルディーン=, فروردین=, フラワシ ]",
22
- "[Ordībehesht=, オルディーベヘシュト=, اردیبهشت=, アシャ・ワヒシュタ ]",
23
- "[Khordād=, ホルダード=, خرداد=, ハルワタート ]",
24
- "[Tīr=, ティール=, تیر=, ティシュトリヤ ]",
25
- "[Mordād=, モルダード=, مرداد=, アムルタート ]",
26
- "[Shahrīvar=, シャハリーヴァル=, شهریور=, フシャスラ・ワルヤ ]",
27
- "[Mehr=, メフル=, مهر=, ミスラ ]",
28
- "[Ābān=, アーバーン=, آبان=, アープ ]",
29
- "[Āzar=, アーザル=, آذر=, アータル ]",
30
- "[Dei=, デイ=, دی=, アフラ・マズダー ]",
31
- "[Bahman=, バフマン=, بهمن=, ウォフ・マナフ ]",
32
- "[Esfand=, エスファンド=, اسفند=, スプンタ・アールマティ]",
33
- "[Andarjah=]"
34
- ],
35
-
36
- [self,
37
- "names:[Sign=en:Astrological_sign, 十二宮]",
38
- "[Hamal=, 白羊宮]",
39
- "[Thur=, 金牛宮]",
40
- "[Jawzā=, 双児宮]",
41
- "[Saratān=, 巨蟹宮]",
42
- "[Asad=, 獅子宮]",
43
- "[Sunbula=, 処女宮]",
44
- "[Mizān=, 天秤宮]",
45
- "['Aqrab=, 天蝎宮]",
46
- "[Qaws=, 人馬宮]",
47
- "[Jadi=, 磨羯宮]",
48
- "[Dalw=, 宝瓶宮]",
49
- "[Hūt=, 双魚宮]"
50
- ]
51
- ]]
52
- end
53
-
54
- module Coordinates
55
-
56
- # Location of cities in Iran
57
- Iranian = [When::BasicTypes::M17n, [
58
- "locale:[=en:, ja=ja:, alias]",
59
- "names:[Iranian]",
60
- [Spatial, "long:51.4045E", "lat:32.3905N", "label:[Isfahan, エスファハーン]"],
61
- [Spatial, "long:51.2523E", "lat:35.4146N", "label:[Tehran, テヘラン ]"]
62
- ]]
63
- end
64
-
65
- class TM::CalendarEra
66
-
67
- # イラン暦
68
- Iranian = [self, [
69
- "area:[Iranian]",
70
- ["[Anno_Persico=en:Iranian_calendars,*alias:AP]1.1.1", '@CE', "0001-01-01^TableBasedJalali",
71
- "1230-01-01^Borji",
72
- "1304-01-01^SolarHijri", ""],
73
- ["[Anno_Cyrus=,*alias:AC]2535.1.1", "", "1355-01-01^SolarHijri"],
74
- ["[Anno_Hijra=en:Iranian_calendars,*alias:AH]1357.6.5", "@CR", "1357-06-05^SolarHijri"]
75
- ]]
76
- end
77
-
78
- module CalendarTypes
79
-
80
- _indicesM = [
81
- When.Index('Iranian::Month', {:unit =>12}),
82
- When::Coordinates::DefaultDayIndex
83
- ]
84
-
85
- _indicesJ = [
86
- When.Index('Iranian::Month', {:unit =>13}),
87
- When::Coordinates::DefaultDayIndex
88
- ]
89
-
90
- _indicesS = [
91
- When.Index('Iranian::Sign', {:unit =>12}),
92
- When::Coordinates::DefaultDayIndex
93
- ]
94
-
95
- #
96
- # Solar Hijri Calendar
97
- #
98
- SolarHijri = [SolarYearTableBased, {
99
- 'label' => 'Iranian::SolarHijri',
100
- 'indices' => _indicesM,
101
- 'origin_of_MSC' => -621,
102
- 'epoch_in_CE' => 621,
103
- 'cycle_offset' => 0,
104
- 'time_basis' => '+15:30',
105
- 'rule_table' => {
106
- 365 => {'Length'=>[31] * 6 + [30] * 5 + [29]},
107
- 366 => {'Length'=>[31] * 6 + [30] * 6}
108
- }
109
- }]
110
-
111
- #
112
- # Solar Hijri Algorithmic Calendar
113
- #
114
- SolarHijriAlgorithmic = [CyclicTableBased, {
115
- 'label' => 'Iranian::SolarHijriAlgorithmic',
116
- 'indices' => _indicesM,
117
- 'origin_of_LSC' => 1948321 + 173125,
118
- 'origin_of_MSC' => 475,
119
- 'epoch_in_CE' => 621,
120
- 'rule_table' => {
121
- 'T' => {'Rule' =>['C128'] * 21 + ['C132']},
122
- 'C128' => {'Rule' =>['C29'] + ['C33'] * 3},
123
- 'C132' => {'Rule' =>['C29'] + ['C33'] * 2 + ['C37']},
124
- 'C29' => {'Rule' =>[365] + ([365] * 3 + [366]) * 7},
125
- 'C33' => {'Rule' =>[365] + ([365] * 3 + [366]) * 8},
126
- 'C37' => {'Rule' =>[365] + ([365] * 3 + [366]) * 9},
127
- 365 => {'Length'=>[31] * 6 + [30] * 5 + [29]},
128
- 366 => {'Length'=>[31] * 6 + [30] * 6}
129
- }
130
- }]
131
-
132
- #
133
- # Jalali Calendar
134
- #
135
- Jalali = [HinduSolar, {
136
- 'label' => 'Iranian::Jalali',
137
- 'indices' => _indicesM,
138
- 'type' => 'SBH'
139
- }]
140
-
141
- #
142
- # Table Based Jalali Calendar
143
- #
144
- TableBasedJalali = [CyclicTableBased, {
145
- 'label' => 'Iranian::Jalali',
146
- 'indices' => _indicesJ,
147
- 'origin_of_LSC' => 1948321 + 173125,
148
- 'origin_of_MSC' => 475,
149
- 'epoch_in_CE' => 621,
150
- 'rule_table' => {
151
- 'T' => {'Rule' =>['C128'] * 21 + ['C132']},
152
- 'C128' => {'Rule' =>['C29'] + ['C33'] * 3},
153
- 'C132' => {'Rule' =>['C29'] + ['C33'] * 2 + ['C37']},
154
- 'C29' => {'Rule' =>[365] + ([365] * 3 + [366]) * 7},
155
- 'C33' => {'Rule' =>[365] + ([365] * 3 + [366]) * 8},
156
- 'C37' => {'Rule' =>[365] + ([365] * 3 + [366]) * 9},
157
- 365 => {'Length'=>[30] * 12 + [5]},
158
- 366 => {'Length'=>[30] * 12 + [6]}
159
- }
160
- }]
161
-
162
- #
163
- # Borji Calendar
164
- #
165
- Borji = [EphemerisBasedSolar, {
166
- 'label' => 'Iranian::Borji',
167
- 'indices' => _indicesS,
168
- 'origin_of_MSC' => -621,
169
- 'epoch_in_CE' => 621,
170
- 'cycle_offset' => 0,
171
- 'time_basis' => '+15:30'
172
- }]
173
-
174
- #
175
- # Table Based Borji Calendar
176
- #
177
- TableBasedBorji = [PatternTableBasedSolar, {
178
- 'label' => 'Iranian::SolarHijri',
179
- 'indices' => _indicesM,
180
- 'origin_of_MSC' => 1230,
181
- 'origin_of_LSC' => 2397203,
182
- 'epoch_in_CE' => 621,
183
- 'before' => 'Borji',
184
- 'after' => 'SolarHijriAlgorithmic',
185
- 'rule_table'=> %w(
186
- 112111000900 011211000900 012111190900 111121009090 111211000900
187
- 011211000900 012111190900 111120109090 111211009000 011211000900
188
- 012111190900 021120109090 111211009090 111211000900 012111190900
189
- 012120109090 111211009090 111211000900 012111190900 012120109090
190
- 111121009090 111211000900 012111000900 012111109090 111121009090
191
- 111211000900 011211000900 012111109090 111121009090 111211000900
192
- 011211000900 012111109900 111121009090 111211000900 011211000900
193
- 012111109900 111121009090 111211000900 011211000900 012111190900
194
- 111120109090 111211009000 011211000900 012111190900 012120109090
195
- 111211009090 111211000900 012111190900 012120109090 111121009090
196
- 111211000900 012111190900 012111109090 111121009090 111211000900
197
- 011211000900 012111109090 111121009090 111211000900 011211000900
198
- 012111109090 111121009090 111211000900 011211000900 012111109090
199
- 111121009090 111211000900 011211000900 012111109900 111120109090
200
- 111211000900 011211000900 012111190900 012120109090)
201
- }]
202
- end
203
- end
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2015 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
+ class BasicTypes::M17n
10
+
11
+ Iranian = [self, [
12
+ "locale:[=en:, ja=ja:, zh=zh:, alias=ja:]",
13
+ "names:[Iranian=en:Iranian_calendars, イラン暦, 伊朗曆]",
14
+ "[SolarHijri=en:Solar_Hijri_calendar#Details_of_the_modern_calendar, ヘジラ太陽暦=ja:%%<イラン暦>, 希吉拉陽曆=zh:%%<伊朗曆>]",
15
+ "[SolarHijri (Combined)=en:Solar_Hijri_calendar#Details_of_the_modern_calendar, ヘジラ太陽暦(多種接続)=ja:%%<イラン暦>, 希吉拉陽曆(連接起來)=zh:%%<伊朗曆>]",
16
+ "[SolarHijriAlgorithmic=en:Solar_Hijri_calendar#Solar_Hijri_algorithmic_calendar, ヘジラ太陽暦(2820年周期)=ja:%%<イラン暦>, 希吉拉陽曆(2820年週期)=zh:%%<伊朗曆>]",
17
+ "[Jalali=en:Jalali_calendar, ジャラーリー暦, 波斯曆=]",
18
+ "[JalaliAlgorithmic=en:Jalali_calendar, ジャラーリー暦(2820年周期)=ja:%%<ジャラーリー暦>, 波斯曆(2820年週期)=]",
19
+ "[Borji=, ボルジ暦=]",
20
+
21
+ [self,
22
+ "locale:[=en:, ja=ja:, ar=ar:, alias=ja:]",
23
+ "names:[month name=en:Month, 月の名前=ja:%%<月_(暦)>, zh:該月的名稱=, *alias:Month=]",
24
+ "[Farvardīn=, ファルヴァルディーン=, فروردین=, フラワシ ]",
25
+ "[Ordībehesht=, オルディーベヘシュト=, اردیبهشت=, アシャ・ワヒシュタ ]",
26
+ "[Khordād=, ホルダード=, خرداد=, ハルワタート ]",
27
+ "[Tīr=, ティール=, تیر=, ティシュトリヤ ]",
28
+ "[Mordād=, モルダード=, مرداد=, アムルタート ]",
29
+ "[Shahrīvar=, シャハリーヴァル=, شهریور=, フシャスラ・ワルヤ ]",
30
+ "[Mehr=, メフル=, مهر=, ミスラ ]",
31
+ "[Ābān=, アーバーン=, آبان=, アープ ]",
32
+ "[Āzar=, アーザル=, آذر=, アータル ]",
33
+ "[Dei=, デイ=, دی=, アフラ・マズダー ]",
34
+ "[Bahman=, バフマン=, بهمن=, ウォフ・マナフ ]",
35
+ "[Esfand=, エスファンド=, اسفند=, スプンタ・アールマティ]",
36
+ "[Andarjah=]"
37
+ ],
38
+
39
+ [self,
40
+ "names:[Sign=en:Astrological_sign, 十二宮]",
41
+ "[Hamal=, 白羊宮]",
42
+ "[Thur=, 金牛宮]",
43
+ "[Jawzā=, 双児宮]",
44
+ "[Saratān=, 巨蟹宮]",
45
+ "[Asad=, 獅子宮]",
46
+ "[Sunbula=, 処女宮]",
47
+ "[Mizān=, 天秤宮]",
48
+ "['Aqrab=, 天蝎宮]",
49
+ "[Qaws=, 人馬宮]",
50
+ "[Jadi=, 磨羯宮]",
51
+ "[Dalw=, 宝瓶宮]",
52
+ "[Hūt=, 双魚宮]"
53
+ ]
54
+ ]]
55
+ end
56
+
57
+ module Coordinates
58
+
59
+ # Location of cities in Iran
60
+ Iranian = [When::BasicTypes::M17n, [
61
+ "locale:[=en:, ja=ja:, alias]",
62
+ "names:[Iranian]",
63
+ [Spatial, "long:51.4045E", "lat:32.3905N", "label:[Isfahan, エスファハーン]"],
64
+ [Spatial, "long:51.2523E", "lat:35.4146N", "label:[Tehran, テヘラン ]"]
65
+ ]]
66
+ end
67
+
68
+ class TM::CalendarEra
69
+
70
+ # イラン暦
71
+ Iranian = [self, [
72
+ "area:[Iranian]",
73
+ ["[Anno_Persico=en:Iranian_calendars,*alias:AP]1.1.1", '@CE', "0001-01-01^TableBasedJalali",
74
+ "1230-01-01^Borji",
75
+ "1304-01-01^SolarHijri", ""],
76
+ ["[Anno_Cyrus=,*alias:AC]2535.1.1", "", "1355-01-01^SolarHijri"],
77
+ ["[Anno_Hijra=en:Iranian_calendars,*alias:AH]1357.6.5", "@CR", "1357-06-05^SolarHijri"]
78
+ ]]
79
+ end
80
+
81
+ module CalendarTypes
82
+
83
+ _indicesM = [
84
+ When.Index('Iranian::Month', {:unit =>12}),
85
+ When::Coordinates::DefaultDayIndex
86
+ ]
87
+
88
+ _indicesJ = [
89
+ When.Index('Iranian::Month', {:unit =>13}),
90
+ When::Coordinates::DefaultDayIndex
91
+ ]
92
+
93
+ _indicesS = [
94
+ When.Index('Iranian::Sign', {:unit =>12}),
95
+ When::Coordinates::DefaultDayIndex
96
+ ]
97
+
98
+ #
99
+ # Solar Hijri Calendar
100
+ #
101
+ SolarHijri = [SolarYearTableBased, {
102
+ 'label' => 'Iranian::SolarHijri',
103
+ 'indices' => _indicesM,
104
+ 'origin_of_MSC' => -621,
105
+ 'epoch_in_CE' => 621,
106
+ 'cycle_offset' => 0,
107
+ 'time_basis' => '+15:30',
108
+ 'rule_table' => {
109
+ 365 => {'Length'=>[31] * 6 + [30] * 5 + [29]},
110
+ 366 => {'Length'=>[31] * 6 + [30] * 6}
111
+ }
112
+ }]
113
+
114
+ #
115
+ # Solar Hijri Algorithmic Calendar
116
+ #
117
+ SolarHijriAlgorithmic = [CyclicTableBased, {
118
+ 'label' => 'Iranian::SolarHijriAlgorithmic',
119
+ 'indices' => _indicesM,
120
+ 'origin_of_LSC' => 1948321 + 173125,
121
+ 'origin_of_MSC' => 475,
122
+ 'epoch_in_CE' => 621,
123
+ 'rule_table' => {
124
+ 'T' => {'Rule' =>['C128'] * 21 + ['C132']},
125
+ 'C128' => {'Rule' =>['C29'] + ['C33'] * 3},
126
+ 'C132' => {'Rule' =>['C29'] + ['C33'] * 2 + ['C37']},
127
+ 'C29' => {'Rule' =>[365] + ([365] * 3 + [366]) * 7},
128
+ 'C33' => {'Rule' =>[365] + ([365] * 3 + [366]) * 8},
129
+ 'C37' => {'Rule' =>[365] + ([365] * 3 + [366]) * 9},
130
+ 365 => {'Length'=>[31] * 6 + [30] * 5 + [29]},
131
+ 366 => {'Length'=>[31] * 6 + [30] * 6}
132
+ }
133
+ }]
134
+
135
+ #
136
+ # Jalali Calendar
137
+ #
138
+ Jalali = [HinduSolar, {
139
+ 'label' => 'Iranian::Jalali',
140
+ 'indices' => _indicesM,
141
+ 'type' => 'SBH'
142
+ }]
143
+
144
+ #
145
+ # Table Based Jalali Calendar
146
+ #
147
+ TableBasedJalali = [CyclicTableBased, {
148
+ 'label' => 'Iranian::JalaliAlgorithmic',
149
+ 'indices' => _indicesJ,
150
+ 'origin_of_LSC' => 1948321 + 173125,
151
+ 'origin_of_MSC' => 475,
152
+ 'epoch_in_CE' => 621,
153
+ 'rule_table' => {
154
+ 'T' => {'Rule' =>['C128'] * 21 + ['C132']},
155
+ 'C128' => {'Rule' =>['C29'] + ['C33'] * 3},
156
+ 'C132' => {'Rule' =>['C29'] + ['C33'] * 2 + ['C37']},
157
+ 'C29' => {'Rule' =>[365] + ([365] * 3 + [366]) * 7},
158
+ 'C33' => {'Rule' =>[365] + ([365] * 3 + [366]) * 8},
159
+ 'C37' => {'Rule' =>[365] + ([365] * 3 + [366]) * 9},
160
+ 365 => {'Length'=>[30] * 12 + [5]},
161
+ 366 => {'Length'=>[30] * 12 + [6]}
162
+ }
163
+ }]
164
+
165
+ #
166
+ # Borji Calendar
167
+ #
168
+ Borji = [EphemerisBasedSolar, {
169
+ 'label' => 'Iranian::Borji',
170
+ 'indices' => _indicesS,
171
+ 'origin_of_MSC' => -621,
172
+ 'epoch_in_CE' => 621,
173
+ 'cycle_offset' => 0,
174
+ 'time_basis' => '+15:30'
175
+ }]
176
+
177
+ #
178
+ # Table Based Borji Calendar
179
+ #
180
+ TableBasedBorji = [PatternTableBasedSolar, {
181
+ 'label' => 'Iranian::SolarHijri (Combined)',
182
+ 'indices' => _indicesM,
183
+ 'origin_of_MSC' => 1230,
184
+ 'origin_of_LSC' => 2397203,
185
+ 'epoch_in_CE' => 621,
186
+ 'before' => 'Borji',
187
+ 'after' => 'SolarHijriAlgorithmic',
188
+ 'rule_table'=> %w(
189
+ 112111000900 011211000900 012111190900 111121009090 111211000900
190
+ 011211000900 012111190900 111120109090 111211009000 011211000900
191
+ 012111190900 021120109090 111211009090 111211000900 012111190900
192
+ 012120109090 111211009090 111211000900 012111190900 012120109090
193
+ 111121009090 111211000900 012111000900 012111109090 111121009090
194
+ 111211000900 011211000900 012111109090 111121009090 111211000900
195
+ 011211000900 012111109900 111121009090 111211000900 011211000900
196
+ 012111109900 111121009090 111211000900 011211000900 012111190900
197
+ 111120109090 111211009000 011211000900 012111190900 012120109090
198
+ 111211009090 111211000900 012111190900 012120109090 111121009090
199
+ 111211000900 012111190900 012111109090 111121009090 111211000900
200
+ 011211000900 012111109090 111121009090 111211000900 011211000900
201
+ 012111109090 111121009090 111211000900 011211000900 012111109090
202
+ 111121009090 111211000900 011211000900 012111109900 111120109090
203
+ 111211000900 011211000900 012111190900 012120109090)
204
+ }]
205
+ end
206
+ end