when_exe 0.4.1 → 0.4.2

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 (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