when_exe 0.3.7 → 0.3.8
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.
- checksums.yaml +4 -4
- data/README.md +210 -171
- data/bin/irb.rc +1 -0
- data/lib/when_exe.rb +78 -53
- data/lib/when_exe/basictypes.rb +27 -8
- data/lib/when_exe/calendarnote.rb +848 -805
- data/lib/when_exe/calendartypes.rb +110 -240
- data/lib/when_exe/coordinates.rb +2440 -2175
- data/lib/when_exe/core/compatibility.rb +1 -1
- data/lib/when_exe/core/duration.rb +13 -11
- data/lib/when_exe/core/extension.rb +38 -45
- data/lib/when_exe/ephemeris.rb +43 -14
- data/lib/when_exe/ephemeris/eclipse.rb +149 -0
- data/lib/when_exe/ephemeris/notes.rb +39 -7
- data/lib/when_exe/icalendar.rb +2 -6
- data/lib/when_exe/inspect.rb +1408 -1399
- data/lib/when_exe/parts/enumerator.rb +486 -477
- data/lib/when_exe/parts/resource.rb +1101 -1069
- data/lib/when_exe/parts/timezone.rb +6 -5
- data/lib/when_exe/region/babylonian.rb +405 -405
- data/lib/when_exe/region/bahai.rb +21 -61
- data/lib/when_exe/region/chinese/epochs.rb +81 -81
- data/lib/when_exe/region/chinese/twins.rb +51 -51
- data/lib/when_exe/region/christian.rb +7 -2
- data/lib/when_exe/region/coptic.rb +1 -1
- data/lib/when_exe/region/discordian.rb +9 -16
- data/lib/when_exe/region/french.rb +1 -1
- data/lib/when_exe/region/hanke_henry.rb +57 -0
- data/lib/when_exe/region/indian.rb +41 -73
- data/lib/when_exe/region/international_fixed.rb +97 -0
- data/lib/when_exe/region/iranian.rb +203 -203
- data/lib/when_exe/region/japanese.rb +13 -13
- data/lib/when_exe/region/japanese/eclipses.rb +1194 -0
- data/lib/when_exe/region/japanese/notes.rb +1482 -1383
- data/lib/when_exe/region/japanese/residues.rb +726 -721
- data/lib/when_exe/region/japanese/twins.rb +37 -37
- data/lib/when_exe/region/jewish.rb +2 -2
- data/lib/when_exe/region/pax.rb +60 -0
- data/lib/when_exe/region/positivist.rb +100 -0
- data/lib/when_exe/region/roman.rb +333 -334
- data/lib/when_exe/region/shire.rb +3 -20
- data/lib/when_exe/region/thai.rb +2 -2
- data/lib/when_exe/region/tibetan.rb +3 -3
- data/lib/when_exe/region/tranquility.rb +208 -0
- data/lib/when_exe/region/vanishing_leprechaun.rb +53 -0
- data/lib/when_exe/region/vietnamese.rb +4 -4
- data/lib/when_exe/region/world.rb +9 -13
- data/lib/when_exe/region/world_season.rb +89 -0
- data/lib/when_exe/region/zoroastrian.rb +4 -2
- data/lib/when_exe/tmobjects.rb +14 -4
- data/lib/when_exe/tmposition.rb +239 -81
- data/lib/when_exe/tmreference.rb +57 -28
- data/lib/when_exe/version.rb +1 -1
- data/link_to_online_documents +6 -3
- data/test/examples/today.rb +1 -1
- data/test/scripts.rb +23 -0
- data/test/scripts/2.ext.rb +169 -0
- data/test/scripts/2.rb +169 -0
- data/test/scripts/3.ext.rb +133 -0
- data/test/scripts/3.rb +134 -0
- data/test/scripts/4.ext.rb +112 -0
- data/test/scripts/4.min.rb +65 -0
- data/test/scripts/4.rb +136 -0
- data/test/scripts/5.ext.rb +78 -0
- data/test/scripts/5.rb +81 -0
- data/test/scripts/6.gcal.rb +131 -0
- data/test/scripts/6.rb +205 -0
- data/test/scripts/6.tz.rb +105 -0
- data/test/scripts/7.phase.rb +109 -0
- data/test/scripts/7.rb +95 -0
- data/test/scripts/7.term.rb +128 -0
- data/test/scripts/7.week.rb +84 -0
- data/test/scripts/8.ext.rb +61 -0
- data/test/scripts/8.rb +62 -0
- data/test/scripts/9.ext.rb +131 -0
- data/test/scripts/9.rb +130 -0
- data/test/scripts/chinese-luni-solar.rb +52 -0
- data/test/{examples → scripts}/geometric_complex.rb +41 -41
- data/test/scripts/geometric_complex.txt +18 -0
- data/test/scripts/korea.rb +59 -0
- data/test/scripts/thai-reviewed.txt +211 -0
- data/test/scripts/thai.rb +36 -0
- data/test/scripts/thai.txt +210 -0
- data/test/test.rb +7 -0
- data/test/test/basictypes.rb +22 -0
- data/test/test/coordinates.rb +2 -1
- data/test/test/ephemeris.rb +34 -2
- data/test/test/icalendar.rb +12 -0
- data/test/test/inspect.rb +37 -1
- data/test/test/parts.rb +4 -3
- data/test/test/region/armenian.rb +20 -0
- data/test/test/region/bahai.rb +58 -0
- data/test/test/region/chinese.rb +14 -3
- data/test/test/region/christian.rb +16 -35
- data/test/test/region/discordian.rb +20 -0
- data/test/test/region/indian.rb +30 -2
- data/test/test/region/japanese.rb +24 -0
- data/test/test/region/jewish.rb +2 -0
- data/test/test/region/m17n.rb +9 -0
- data/test/test/region/reforms.rb +121 -0
- data/test/test/region/residue.rb +17 -11
- data/test/test/region/shire.rb +58 -0
- data/test/test/region/swedish.rb +45 -0
- data/test/test/region/zoroastrian.rb +58 -0
- data/test/test/tmobjects.rb +74 -0
- data/test/test/tmposition.rb +468 -397
- data/when_exe.gemspec +2 -2
- metadata +49 -6
|
@@ -180,7 +180,7 @@ module When
|
|
|
180
180
|
#
|
|
181
181
|
# @private
|
|
182
182
|
def _to_date_for_note(date)
|
|
183
|
-
date = When::
|
|
183
|
+
date = When::Shire ^ date unless date.frame.label.to_s == 'Shire'
|
|
184
184
|
date
|
|
185
185
|
end
|
|
186
186
|
|
|
@@ -209,32 +209,15 @@ module When
|
|
|
209
209
|
'label' => 'Shire::Shire',
|
|
210
210
|
'indices' => _shire_indices,
|
|
211
211
|
'border' => '00-00-02',
|
|
212
|
+
'engine_day' => -9, # Jun 1st is 01-09
|
|
212
213
|
'day_offset' => -183, # the day 183 days before summer solstice
|
|
213
214
|
'cycle_offset' => Rational(1,4), # summer solstice
|
|
214
|
-
|
|
215
|
+
# 'time_basis' => '+09:00', # JST
|
|
215
216
|
'rule_table' => {
|
|
216
217
|
365 => {'Length'=>[2]+[30]*6+[3]+[30]*6, 'IDs'=>_IDs},
|
|
217
218
|
366 => {'Length'=>[2]+[30]*6+[4]+[30]*6, 'IDs'=>_IDs}
|
|
218
219
|
},
|
|
219
220
|
'note' => 'ShireWeek'
|
|
220
221
|
}]
|
|
221
|
-
|
|
222
|
-
#
|
|
223
|
-
# Shire Calendar based on Gregorian Date
|
|
224
|
-
#
|
|
225
|
-
ShireG = [CyclicTableBased, {
|
|
226
|
-
'label' => 'Shire::Shire',
|
|
227
|
-
'origin_of_LSC' => 1721060-10,
|
|
228
|
-
'indices' => _shire_indices,
|
|
229
|
-
'border' => '00-00-02',
|
|
230
|
-
'rule_table' => {
|
|
231
|
-
'T' => {'Rule' =>['LC', 'SC', 'SC', 'SC']},
|
|
232
|
-
'SC' => {'Rule' =>[365]*4 + [366, 365, 365, 365]*24},
|
|
233
|
-
'LC' => {'Rule' =>[366, 365, 365, 365]*25},
|
|
234
|
-
365 => {'Length'=>[2]+[30]*6+[3]+[30]*6, 'IDs'=>_IDs},
|
|
235
|
-
366 => {'Length'=>[2]+[30]*6+[4]+[30]*6, 'IDs'=>_IDs}
|
|
236
|
-
},
|
|
237
|
-
'note' => 'ShireWeek'
|
|
238
|
-
}]
|
|
239
222
|
end
|
|
240
223
|
end
|
data/lib/when_exe/region/thai.rb
CHANGED
|
@@ -226,13 +226,13 @@ module When
|
|
|
226
226
|
def _normalize(args=[], options={})
|
|
227
227
|
@origin_of_LSC ||= 2392666
|
|
228
228
|
@origin_of_MSC ||= 1201
|
|
229
|
-
@epoch_in_CE ||=
|
|
229
|
+
@epoch_in_CE ||= 638
|
|
230
230
|
@before = @after = 'ThaiC'
|
|
231
231
|
@indices ||= ThaiP::Indices
|
|
232
232
|
pattern ||= Pattern.dup
|
|
233
233
|
if @patch
|
|
234
234
|
@patch.scan(/(\d+)([ABC])/i) do |year,type|
|
|
235
|
-
pattern[year.to_i
|
|
235
|
+
pattern[year.to_i-(@origin_of_MSC+@epoch_in_CE)] = type.upcase
|
|
236
236
|
end
|
|
237
237
|
end
|
|
238
238
|
@rule_table = {
|
|
@@ -170,9 +170,9 @@ module When
|
|
|
170
170
|
When.Index('Tibetan::Month', {:branch=>{0=>intercalary_month[0], 1=>intercalary_month[1]}, :shift=>2}),
|
|
171
171
|
When.Index({:branch=>{-2=>intercalary_day[0], +1=>intercalary_day[1]}})
|
|
172
172
|
]
|
|
173
|
-
@label
|
|
174
|
-
@
|
|
175
|
-
@type
|
|
173
|
+
@label ||= 'Tibetan::Tibetan'
|
|
174
|
+
@diff_to_CE ||= 0
|
|
175
|
+
@type ||= 1
|
|
176
176
|
@parameter = case @type.to_i
|
|
177
177
|
when 1
|
|
178
178
|
{'M0'=>(60+15),
|
|
@@ -0,0 +1,208 @@
|
|
|
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
|
+
Tranquility = [self, [
|
|
13
|
+
"locale:[=en:, ja=ja:, alias]",
|
|
14
|
+
"names:[Tranquility=]",
|
|
15
|
+
"[Tranquility=en:Tranquility_Calendar, 静かの海の暦=]",
|
|
16
|
+
|
|
17
|
+
[self,
|
|
18
|
+
"names:[IntercalaryDay=en:Intercalation, 閏日=ja:%%<閏>]",
|
|
19
|
+
"[%0sAldrin Day=, %0s閏日=]"
|
|
20
|
+
]
|
|
21
|
+
]]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
#
|
|
25
|
+
# Tranquility Week
|
|
26
|
+
#
|
|
27
|
+
class CalendarNote::TranquilityWeek < CalendarNote::Week
|
|
28
|
+
|
|
29
|
+
#
|
|
30
|
+
# Tranquility Note
|
|
31
|
+
#
|
|
32
|
+
Notes = [When::BasicTypes::M17n, [
|
|
33
|
+
"locale:[=en:, ja=ja:, alias]",
|
|
34
|
+
"names:[Tranquility]",
|
|
35
|
+
|
|
36
|
+
# Notes for year ----------------------------
|
|
37
|
+
[When::BasicTypes::M17n,
|
|
38
|
+
"names:[year]"
|
|
39
|
+
],
|
|
40
|
+
|
|
41
|
+
# Notes for month ----------------------------
|
|
42
|
+
[When::BasicTypes::M17n,
|
|
43
|
+
"names:[month]",
|
|
44
|
+
[When::BasicTypes::M17n,
|
|
45
|
+
"names:[Month]",
|
|
46
|
+
"[Archimedes, アルキメデス ]",
|
|
47
|
+
"[Brahe=en:Tycho_Brahe, ブラーエ=ja:%%<ティコ・ブラーエ> ]",
|
|
48
|
+
"[Copernicus=en:Nicolaus_Copernicus, コペルニクス=ja:%%<ニコラウス・コペルニクス> ]",
|
|
49
|
+
"[Darwin=en:Charles_Darwin, ダーウィン=ja:%%<チャールズ・ダーウィン> ]",
|
|
50
|
+
"[Einstein=en:Albert_Einstein, アインシュタイン=ja:%%<アルベルト・アインシュタイン> ]",
|
|
51
|
+
"[Faraday=en:Michael_Faraday, ファラデー=ja:%%<マイケル・ファラデー> ]",
|
|
52
|
+
"[Galileo=en:Galileo_Galilei, ガリレオ=ja:%%<ガリレオ・ガリレイ> ]",
|
|
53
|
+
"[Hippocrates, ヒポクラテス ]",
|
|
54
|
+
"[Imhotep, イムホテプ ]",
|
|
55
|
+
"[Jung=en:Carl_Jung, ユング=ja:%%<カール・グスタフ・ユング> ]",
|
|
56
|
+
"[Kepler=en:Johannes_Kepler, ケプラー=ja:%%<ヨハネス・ケプラー> ]",
|
|
57
|
+
"[Lavoisier=en:Antoine_Lavoisier, ラヴォアジエ=ja:%%<アントワーヌ・ラヴォアジエ> ]",
|
|
58
|
+
"[Mendel=en:Gregor_Mendel, メンデル=ja:%%<グレゴール・ヨハン・メンデル> ]"
|
|
59
|
+
]
|
|
60
|
+
],
|
|
61
|
+
|
|
62
|
+
# Notes for day ----------------------------
|
|
63
|
+
[When::BasicTypes::M17n,
|
|
64
|
+
"names:[day]",
|
|
65
|
+
[When::BasicTypes::M17n,
|
|
66
|
+
"names:[Week]",
|
|
67
|
+
[DayOfWeek, "label:[Friday, 金曜日, /date/day_names/5]", {'delta'=> 7}],
|
|
68
|
+
[DayOfWeek, "label:[Saturday, 土曜日, /date/day_names/6]", {'delta'=> 7}],
|
|
69
|
+
[DayOfWeek, "label:[Sunday, 日曜日, /date/day_names/0]", {'delta'=> 7}],
|
|
70
|
+
[DayOfWeek, "label:[Monday, 月曜日, /date/day_names/1]", {'delta'=> 7}],
|
|
71
|
+
[DayOfWeek, "label:[Tuesday, 火曜日, /date/day_names/2]", {'delta'=> 7}],
|
|
72
|
+
[DayOfWeek, "label:[Wednesday, 水曜日, /date/day_names/3]", {'delta'=> 7}],
|
|
73
|
+
[DayOfWeek, "label:[Thursday, 木曜日, /date/day_names/4]", {'delta'=> 7}],
|
|
74
|
+
[DayOfWeek, "label:[Armstrong Day=en:Neil_Armstrong, アームストロングの日=ja:%%<ニール・アームストロング>]", {'delta'=> 366}],
|
|
75
|
+
[DayOfWeek, "label:[Aldrin Day=en:Buzz_Aldrin, オルドリンの日=ja:%%<バズ・オルドリン>]", {'delta'=>1461}]
|
|
76
|
+
],
|
|
77
|
+
|
|
78
|
+
"[Common_Week]"
|
|
79
|
+
]
|
|
80
|
+
]]
|
|
81
|
+
|
|
82
|
+
# @private
|
|
83
|
+
IndexOfWeek = [0, 1, 2, 3, 4, 5, 7, nil, 6]
|
|
84
|
+
|
|
85
|
+
# Just or last friday
|
|
86
|
+
#
|
|
87
|
+
# @param [When::TM::TemporalPosition] date
|
|
88
|
+
# @param [nil] parameter (not used)
|
|
89
|
+
#
|
|
90
|
+
# @return [When::TM::TemporalPosition]
|
|
91
|
+
#
|
|
92
|
+
def friday(date, parameter=nil)
|
|
93
|
+
date = _to_date_for_note(date)
|
|
94
|
+
y,m,d = date.cal_date
|
|
95
|
+
dow = (+d-1) % 7
|
|
96
|
+
if date.length(When::MONTH) == 29 && +d >= 28
|
|
97
|
+
dow = (m == 8) ? (d*1 == 27 ? 6 : 7) :
|
|
98
|
+
(d == 28 ? 6 : 7)
|
|
99
|
+
end
|
|
100
|
+
date -= When::P1D * dow unless dow == 0
|
|
101
|
+
date.events = [@days_of_week[0]]
|
|
102
|
+
date
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
#
|
|
106
|
+
# What day is it the specified date?
|
|
107
|
+
#
|
|
108
|
+
# @param [When::TM::TemporalPosition] date
|
|
109
|
+
# @param [When::TM::CalDate] base
|
|
110
|
+
#
|
|
111
|
+
# @return [Hash<:value=>When::CalendarNote::Week::DayOfWeek, :position=>Array<Integer>>]
|
|
112
|
+
#
|
|
113
|
+
def week(date, base=nil)
|
|
114
|
+
date = _to_date_for_note(date)
|
|
115
|
+
y,m,d = date.cal_date
|
|
116
|
+
dow = d*0 == 0 ? (d<=28 ? (d-1) % 7 : d-22) : 8
|
|
117
|
+
length = (base||date).length(When::MONTH) - 21
|
|
118
|
+
index = (length == 7 || m == 13) ? dow : IndexOfWeek[dow]
|
|
119
|
+
{:value=>@days_of_week[dow], :position=>[index, length]}
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
#
|
|
123
|
+
# Week labels
|
|
124
|
+
#
|
|
125
|
+
# @param [When::TM::TemporalPosition] date
|
|
126
|
+
#
|
|
127
|
+
# @return [Array<When::CalendarNote::Week::DayOfWeek>]
|
|
128
|
+
#
|
|
129
|
+
def week_labels(date)
|
|
130
|
+
date = _to_date_for_note(date)
|
|
131
|
+
date.length(When::MONTH) == 28 ? @days_of_week.child[0...7] :
|
|
132
|
+
date.month == 13 ? @days_of_week.child[0...8] :
|
|
133
|
+
@days_of_week.child[0...6] + [@days_of_week.child[8], @days_of_week.child[6]]
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
#
|
|
137
|
+
# convert any date to Tranquility calendar date
|
|
138
|
+
#
|
|
139
|
+
# @private
|
|
140
|
+
def _to_date_for_note(date)
|
|
141
|
+
date = When::Tranquility ^ date unless date.frame.equal?(When::Tranquility)
|
|
142
|
+
date
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
private
|
|
146
|
+
|
|
147
|
+
# Normalization fo object
|
|
148
|
+
# @private
|
|
149
|
+
def _normalize(args=[], options={})
|
|
150
|
+
@event ||= 'friday'
|
|
151
|
+
super
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
module CalendarTypes
|
|
156
|
+
|
|
157
|
+
#
|
|
158
|
+
# Tranquility calendar based on Gregorian calendar
|
|
159
|
+
#
|
|
160
|
+
class Tranquility < YearLengthTableBased
|
|
161
|
+
|
|
162
|
+
# @private
|
|
163
|
+
Normal_IDS = (1..28).to_a
|
|
164
|
+
|
|
165
|
+
# @private
|
|
166
|
+
Long_IDS = (1..29).to_a
|
|
167
|
+
|
|
168
|
+
# @private
|
|
169
|
+
Leap_IDS = (1..27).to_a + [When.Pair(27,1), 28]
|
|
170
|
+
|
|
171
|
+
private
|
|
172
|
+
|
|
173
|
+
#
|
|
174
|
+
# Object Normalization
|
|
175
|
+
#
|
|
176
|
+
def _normalize(args=[], options={})
|
|
177
|
+
@label ||= 'Tranquility::Tranquility'
|
|
178
|
+
@indices ||= [
|
|
179
|
+
When.Index('TranquilityWeekNotes::month::Month', {:unit =>13}),
|
|
180
|
+
When.Index({:branch=>{1=>When.M17n('Tranquility::IntercalaryDay')[0]}})
|
|
181
|
+
]
|
|
182
|
+
@origin_of_MSC ||= -1968
|
|
183
|
+
@diff_to_CE ||= 0
|
|
184
|
+
@engine_month ||= 7
|
|
185
|
+
@engine_day ||= 21
|
|
186
|
+
@note ||= 'TranquilityWeek'
|
|
187
|
+
@rule_table ||= {
|
|
188
|
+
365 => {'Length'=>[28]*12 + [29]},
|
|
189
|
+
366 => {'Length'=>[28]* 7 + [29] + [28]*4 + [29]}
|
|
190
|
+
}
|
|
191
|
+
super
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
#
|
|
195
|
+
# day arrangement pattern
|
|
196
|
+
#
|
|
197
|
+
def _ids_(date)
|
|
198
|
+
y, m = date
|
|
199
|
+
case m
|
|
200
|
+
when nil ; super
|
|
201
|
+
when 12 ; Long_IDS
|
|
202
|
+
when 7 ; @engine._length([+y + 1, 1]) == 28 ? Normal_IDS : Leap_IDS
|
|
203
|
+
else ; Normal_IDS
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
VanishingLeprechaun = [self, [
|
|
13
|
+
"locale:[=en:, ja]",
|
|
14
|
+
"names:[VanishingLeprechaun=http://suchowan.at.webry.info/201110/article_12.html, 消える小妖精=]"
|
|
15
|
+
]]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
module CalendarTypes
|
|
19
|
+
|
|
20
|
+
class VanishingLeprechaun < EphemerisBased
|
|
21
|
+
|
|
22
|
+
# 月初の通日
|
|
23
|
+
#
|
|
24
|
+
# @param [Integer] m 通月
|
|
25
|
+
#
|
|
26
|
+
# @return [Integer] 月初の通日
|
|
27
|
+
#
|
|
28
|
+
def _new_month_(m)
|
|
29
|
+
div, mod = m.divmod(@cycle_months)
|
|
30
|
+
div * @cycle_days + @offset_table[m % @cycle_months] + @origin_of_LSC
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
#
|
|
36
|
+
# Object Normalization
|
|
37
|
+
#
|
|
38
|
+
def _normalize(args=[], options={})
|
|
39
|
+
@label ||= 'VanishingLeprechaun::VanishingLeprechaun'
|
|
40
|
+
@origin_of_LSC ||= -372154
|
|
41
|
+
@origin_of_MSC ||= -5731
|
|
42
|
+
@epoch_in_CE ||= 0
|
|
43
|
+
_normal = [31] * 5 + [30] * 7
|
|
44
|
+
_leap = [31] * 6 + [30] * 6
|
|
45
|
+
_length_table = ((_normal * 3 + _leap) * 4 + _normal + ((_normal * 3 + _leap) * 4)) * 53 + [30]
|
|
46
|
+
@offset_table = _length_table.inject([0]) {|sum,len| sum << (sum.last + len)}
|
|
47
|
+
@cycle_days = @offset_table.pop
|
|
48
|
+
@cycle_months = @offset_table.length
|
|
49
|
+
super
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -225,11 +225,11 @@ module When
|
|
|
225
225
|
"locale:[=ja:, en=en:, alias]",
|
|
226
226
|
'area:[ベトナム#{?LY=LY}#{&DN=DN}=ja:%%<元号>#%.<ベトナム>,Vietnam#{?LY=LY}#{&DN=DN}=en:Vietnam]',
|
|
227
227
|
[self,
|
|
228
|
-
"period:[
|
|
228
|
+
"period:[前李朝=zh:%%<前李朝>,Early Lý Dynasty]",
|
|
229
229
|
["[天徳,alias:大徳]1","@F","name=[李賁];544.01^Chinese0445", "548.03.21="],
|
|
230
|
-
["[
|
|
231
|
-
["[
|
|
232
|
-
["[
|
|
230
|
+
["[桃郎王=zh:%%<李天寶>]1", "@A","name=[李天宝=zh:%%<李天寶>];548.03.21", "555="],
|
|
231
|
+
["[趙越王=zh:%%<趙光復>]1", "@A","name=[趙光復=zh:%%<趙光復>];548.03.21"],
|
|
232
|
+
["[後李南帝=zh:%%<李佛子>]1","@A","name=[李仏子=zh:%%<李佛子>];571", "590^Chinese0523", "602="]
|
|
233
233
|
],
|
|
234
234
|
[self,
|
|
235
235
|
"period:[呉朝,Ngô Dynasty]",
|
|
@@ -46,14 +46,14 @@ module When
|
|
|
46
46
|
"names:[day]",
|
|
47
47
|
[When::BasicTypes::M17n,
|
|
48
48
|
"names:[Week]",
|
|
49
|
-
[DayOfWeek, "label:[Sunday,
|
|
50
|
-
[DayOfWeek, "label:[Monday,
|
|
51
|
-
[DayOfWeek, "label:[Tuesday,
|
|
52
|
-
[DayOfWeek, "label:[Wednesday,
|
|
53
|
-
[DayOfWeek, "label:[Thursday,
|
|
54
|
-
[DayOfWeek, "label:[Friday,
|
|
55
|
-
[DayOfWeek, "label:[Saturday,
|
|
56
|
-
[DayOfWeek, "label:[Worldsday
|
|
49
|
+
[DayOfWeek, "label:[Sunday, 日曜日, /date/day_names/0]", {'delta'=>7}],
|
|
50
|
+
[DayOfWeek, "label:[Monday, 月曜日, /date/day_names/1]", {'delta'=>7}],
|
|
51
|
+
[DayOfWeek, "label:[Tuesday, 火曜日, /date/day_names/2]", {'delta'=>7}],
|
|
52
|
+
[DayOfWeek, "label:[Wednesday, 水曜日, /date/day_names/3]", {'delta'=>7}],
|
|
53
|
+
[DayOfWeek, "label:[Thursday, 木曜日, /date/day_names/4]", {'delta'=>7}],
|
|
54
|
+
[DayOfWeek, "label:[Friday, 金曜日, /date/day_names/5]", {'delta'=>7}],
|
|
55
|
+
[DayOfWeek, "label:[Saturday, 土曜日, /date/day_names/6]", {'delta'=>7}],
|
|
56
|
+
[DayOfWeek, "label:[Worldsday=, 週外日=]", {'delta'=>366}],
|
|
57
57
|
],
|
|
58
58
|
|
|
59
59
|
"[Common_Week]"
|
|
@@ -159,13 +159,9 @@ module When
|
|
|
159
159
|
#
|
|
160
160
|
# World calendar based on Gregorian calendar
|
|
161
161
|
#
|
|
162
|
-
World = [
|
|
162
|
+
World = [YearLengthTableBased, {
|
|
163
163
|
'label' => 'World::World',
|
|
164
|
-
'origin_of_LSC' => 1721060,
|
|
165
164
|
'rule_table' => {
|
|
166
|
-
'T' => {'Rule' =>['LC', 'SC', 'SC', 'SC']},
|
|
167
|
-
'SC' => {'Rule' =>[365]*4 + [366, 365, 365, 365]*24},
|
|
168
|
-
'LC' => {'Rule' =>[366, 365, 365, 365]*25},
|
|
169
165
|
365 => {'Length'=>[31,30,30]*3 + [31,30,31]},
|
|
170
166
|
366 => {'Length'=>[31,30,30,31,30,31] *2}
|
|
171
167
|
},
|
|
@@ -0,0 +1,89 @@
|
|
|
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
|
+
WorldSeason = [self, [
|
|
13
|
+
"locale:[=en:, ja=ja:, alias]",
|
|
14
|
+
"names:[WorldSeason=]",
|
|
15
|
+
"[WorldSeason=http://calendars.wikia.com/wiki/World_Season_Calendar, アシモフの季節暦=]"
|
|
16
|
+
]]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
#
|
|
20
|
+
# WorldSeason Week
|
|
21
|
+
#
|
|
22
|
+
class CalendarNote::WorldSeasonWeek < CalendarNote::Week
|
|
23
|
+
|
|
24
|
+
#
|
|
25
|
+
# WorldSeason Note
|
|
26
|
+
#
|
|
27
|
+
Notes = [When::BasicTypes::M17n, [
|
|
28
|
+
"locale:[=en:, ja=ja:, alias]",
|
|
29
|
+
"names:[WorldSeason]",
|
|
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
|
+
"[A=] ",
|
|
42
|
+
"[B=] ",
|
|
43
|
+
"[C=] ",
|
|
44
|
+
"[D=] "
|
|
45
|
+
]
|
|
46
|
+
],
|
|
47
|
+
|
|
48
|
+
# Notes for day ----------------------------
|
|
49
|
+
[When::BasicTypes::M17n,
|
|
50
|
+
"names:[day]",
|
|
51
|
+
[When::BasicTypes::M17n,
|
|
52
|
+
"names:[Week]",
|
|
53
|
+
[DayOfWeek, "label:[Sunday, 日曜日, /date/day_names/0]", {'delta'=> 7}],
|
|
54
|
+
[DayOfWeek, "label:[Monday, 月曜日, /date/day_names/1]", {'delta'=> 7}],
|
|
55
|
+
[DayOfWeek, "label:[Tuesday, 火曜日, /date/day_names/2]", {'delta'=> 7}],
|
|
56
|
+
[DayOfWeek, "label:[Wednesday, 水曜日, /date/day_names/3]", {'delta'=> 7}],
|
|
57
|
+
[DayOfWeek, "label:[Thursday, 木曜日, /date/day_names/4]", {'delta'=> 7}],
|
|
58
|
+
[DayOfWeek, "label:[Friday, 金曜日, /date/day_names/5]", {'delta'=> 7}],
|
|
59
|
+
[DayOfWeek, "label:[Saturday, 土曜日, /date/day_names/6]", {'delta'=> 7}],
|
|
60
|
+
[DayOfWeek, "label:[OutOfWeek=, 週外日=]", {'delta'=>366}]
|
|
61
|
+
],
|
|
62
|
+
|
|
63
|
+
"[Common_Week]"
|
|
64
|
+
]
|
|
65
|
+
]]
|
|
66
|
+
|
|
67
|
+
fixed_week_definitions(7*13)
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
module CalendarTypes
|
|
72
|
+
#
|
|
73
|
+
# WorldSeason calendar based on Gregorian calendar
|
|
74
|
+
#
|
|
75
|
+
WorldSeason = [YearLengthTableBased, {
|
|
76
|
+
'label' => 'WorldSeason::WorldSeason',
|
|
77
|
+
'indices' => [
|
|
78
|
+
When.Index('WorldSeasonWeekNotes::month::Month', {:unit =>4}),
|
|
79
|
+
When::Coordinates::DefaultDayIndex
|
|
80
|
+
],
|
|
81
|
+
'engine_day' => -10, # 11th day before new year
|
|
82
|
+
'rule_table' => {
|
|
83
|
+
365 => {'Length'=>[91] * 3 + [92]},
|
|
84
|
+
366 => {'Length'=>[91, 92] * 2}
|
|
85
|
+
},
|
|
86
|
+
'note' => 'WorldSeasonWeek'
|
|
87
|
+
}]
|
|
88
|
+
end
|
|
89
|
+
end
|