when_exe 0.3.4 → 0.3.5
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/locales.rb +2 -2
- data/bin/when.rb +2 -2
- data/lib/when_exe.rb +161 -55
- data/lib/when_exe/basictypes.rb +34 -26
- data/lib/when_exe/calendarnote.rb +654 -0
- data/lib/when_exe/calendartypes.rb +49 -474
- data/lib/when_exe/coordinates.rb +141 -34
- data/lib/when_exe/core/compatibility.rb +22 -2
- data/lib/when_exe/core/extension.rb +47 -3
- data/lib/when_exe/ephemeris.rb +82 -109
- data/lib/when_exe/googlecalendar.rb +1 -1
- data/lib/when_exe/icalendar.rb +26 -14
- data/lib/when_exe/inspect.rb +82 -68
- data/lib/when_exe/locales/af.rb +1 -1
- data/lib/when_exe/locales/ar.rb +1 -1
- data/lib/when_exe/locales/az.rb +1 -1
- data/lib/when_exe/locales/bg.rb +1 -1
- data/lib/when_exe/locales/bn.rb +1 -1
- data/lib/when_exe/locales/bs.rb +1 -1
- data/lib/when_exe/locales/ca.rb +1 -1
- data/lib/when_exe/locales/cs.rb +1 -1
- data/lib/when_exe/locales/cy.rb +1 -1
- data/lib/when_exe/locales/da.rb +1 -1
- data/lib/when_exe/locales/de.rb +1 -1
- data/lib/when_exe/locales/de_AT.rb +1 -1
- data/lib/when_exe/locales/de_CH.rb +1 -1
- data/lib/when_exe/locales/el.rb +1 -1
- data/lib/when_exe/locales/en.rb +1 -1
- data/lib/when_exe/locales/en_AU.rb +1 -1
- data/lib/when_exe/locales/en_CA.rb +1 -1
- data/lib/when_exe/locales/en_GB.rb +1 -1
- data/lib/when_exe/locales/en_IE.rb +1 -1
- data/lib/when_exe/locales/en_IN.rb +1 -1
- data/lib/when_exe/locales/en_NZ.rb +1 -1
- data/lib/when_exe/locales/en_US.rb +1 -1
- data/lib/when_exe/locales/eo.rb +1 -1
- data/lib/when_exe/locales/es.rb +1 -1
- data/lib/when_exe/locales/es_419.rb +1 -1
- data/lib/when_exe/locales/es_AR.rb +1 -1
- data/lib/when_exe/locales/es_CL.rb +1 -1
- data/lib/when_exe/locales/es_CO.rb +1 -1
- data/lib/when_exe/locales/es_CR.rb +1 -1
- data/lib/when_exe/locales/es_EC.rb +1 -1
- data/lib/when_exe/locales/es_MX.rb +1 -1
- data/lib/when_exe/locales/es_PA.rb +1 -1
- data/lib/when_exe/locales/es_PE.rb +1 -1
- data/lib/when_exe/locales/es_VE.rb +1 -1
- data/lib/when_exe/locales/et.rb +1 -1
- data/lib/when_exe/locales/eu.rb +1 -1
- data/lib/when_exe/locales/fa.rb +1 -1
- data/lib/when_exe/locales/fi.rb +1 -1
- data/lib/when_exe/locales/fr.rb +1 -1
- data/lib/when_exe/locales/fr_CA.rb +1 -1
- data/lib/when_exe/locales/fr_CH.rb +1 -1
- data/lib/when_exe/locales/gl.rb +1 -1
- data/lib/when_exe/locales/he.rb +1 -1
- data/lib/when_exe/locales/hi.rb +1 -1
- data/lib/when_exe/locales/hi_IN.rb +1 -1
- data/lib/when_exe/locales/hr.rb +1 -1
- data/lib/when_exe/locales/hu.rb +1 -1
- data/lib/when_exe/locales/id.rb +1 -1
- data/lib/when_exe/locales/is.rb +1 -1
- data/lib/when_exe/locales/it.rb +1 -1
- data/lib/when_exe/locales/it_CH.rb +1 -1
- data/lib/when_exe/locales/ja.rb +1 -1
- data/lib/when_exe/locales/kn.rb +1 -1
- data/lib/when_exe/locales/ko.rb +1 -1
- data/lib/when_exe/locales/lo.rb +1 -1
- data/lib/when_exe/locales/locales.rb +1 -1
- data/lib/when_exe/locales/lt.rb +1 -1
- data/lib/when_exe/locales/lv.rb +1 -1
- data/lib/when_exe/locales/mk.rb +1 -1
- data/lib/when_exe/locales/mn.rb +1 -1
- data/lib/when_exe/locales/ms.rb +1 -1
- data/lib/when_exe/locales/nb.rb +1 -1
- data/lib/when_exe/locales/ne.rb +1 -1
- data/lib/when_exe/locales/nl.rb +1 -1
- data/lib/when_exe/locales/nn.rb +1 -1
- data/lib/when_exe/locales/or.rb +1 -1
- data/lib/when_exe/locales/pl.rb +1 -1
- data/lib/when_exe/locales/pt.rb +1 -1
- data/lib/when_exe/locales/pt_BR.rb +1 -1
- data/lib/when_exe/locales/rm.rb +1 -1
- data/lib/when_exe/locales/ro.rb +1 -1
- data/lib/when_exe/locales/ru.rb +1 -1
- data/lib/when_exe/locales/sk.rb +1 -1
- data/lib/when_exe/locales/sl.rb +1 -1
- data/lib/when_exe/locales/sr.rb +1 -1
- data/lib/when_exe/locales/sv.rb +1 -1
- data/lib/when_exe/locales/sw.rb +1 -1
- data/lib/when_exe/locales/th.rb +1 -1
- data/lib/when_exe/locales/tl.rb +1 -1
- data/lib/when_exe/locales/tr.rb +1 -1
- data/lib/when_exe/locales/uk.rb +1 -1
- data/lib/when_exe/locales/ur.rb +1 -1
- data/lib/when_exe/locales/uz.rb +1 -1
- data/lib/when_exe/locales/vi.rb +1 -1
- data/lib/when_exe/locales/wo.rb +1 -1
- data/lib/when_exe/locales/zh_CN.rb +1 -1
- data/lib/when_exe/locales/zh_HK.rb +1 -1
- data/lib/when_exe/locales/zh_TW.rb +1 -1
- data/lib/when_exe/mini_application.rb +6 -2
- data/lib/when_exe/parts/enumerator.rb +13 -8
- data/lib/when_exe/parts/geometric_complex.rb +3 -5
- data/lib/when_exe/parts/locale.rb +185 -28
- data/lib/when_exe/parts/method_cash.rb +20 -10
- data/lib/when_exe/parts/resource.rb +154 -76
- data/lib/when_exe/parts/timezone.rb +11 -6
- data/lib/when_exe/region/bahai.rb +2 -2
- data/lib/when_exe/region/balinese.rb +296 -296
- data/lib/when_exe/region/chinese.rb +564 -564
- data/lib/when_exe/region/chinese_calendar.rb +5 -1
- data/lib/when_exe/region/chinese_epoch.rb +47 -102
- data/lib/when_exe/region/chinese_twin.rb +798 -0
- data/lib/when_exe/region/christian.rb +314 -338
- data/lib/when_exe/region/coptic.rb +88 -0
- data/lib/when_exe/region/ephemeric_notes.rb +322 -307
- data/lib/when_exe/region/french.rb +2 -2
- data/lib/when_exe/region/indian.rb +361 -272
- data/lib/when_exe/region/iranian.rb +2 -2
- data/lib/when_exe/region/islamic.rb +3 -3
- data/lib/when_exe/region/japanese.rb +1 -1
- data/lib/when_exe/region/japanese_notes.rb +165 -103
- data/lib/when_exe/region/japanese_residues.rb +56 -55
- data/lib/when_exe/region/japanese_twin.rb +228 -0
- data/lib/when_exe/region/javanese.rb +2 -2
- data/lib/when_exe/region/jewish.rb +2 -2
- data/lib/when_exe/region/korean.rb +4 -4
- data/lib/when_exe/region/m17n.rb +19 -19
- data/lib/when_exe/region/martian.rb +21 -9
- data/lib/when_exe/region/mayan.rb +19 -11
- data/lib/when_exe/region/moon.rb +7 -7
- data/lib/when_exe/region/nihon_shoki.rb +7 -7
- data/lib/when_exe/region/roman.rb +100 -100
- data/lib/when_exe/region/shire.rb +130 -147
- data/lib/when_exe/region/thai.rb +2 -2
- data/lib/when_exe/region/tibetan.rb +2 -2
- data/lib/when_exe/region/vietnamese.rb +383 -114
- data/lib/when_exe/region/world.rb +112 -129
- data/lib/when_exe/timestandard.rb +12 -1
- data/lib/when_exe/tmposition.rb +28 -14
- data/lib/when_exe/tmreference.rb +96 -93
- data/lib/when_exe/version.rb +1 -1
- data/test/examples/Terms.m17n +2 -2
- data/test/examples/sample.json +16 -0
- data/test/examples/sample.xml +1 -1
- data/test/test.rb +4 -0
- data/test/test/basictypes.rb +2 -2
- data/test/test/calendarnote.rb +69 -0
- data/test/test/calendartypes.rb +41 -1
- data/test/test/coordinates.rb +12 -1
- data/test/test/ephemeris.rb +13 -66
- data/test/test/icalendar.rb +3 -3
- data/test/test/inspect.rb +1 -1
- data/test/test/parts.rb +7 -4
- data/test/test/region/chinese.rb +45 -0
- data/test/test/region/coptic.rb +27 -0
- data/test/test/region/indian.rb +1 -1
- data/test/test/region/japanese.rb +4 -4
- data/test/test/region/jewish.rb +1 -1
- data/test/test/region/m17n.rb +7 -5
- data/test/test/region/residue.rb +2 -2
- data/test/test/region/vietnamese.rb +102 -0
- data/test/test/timestandard.rb +81 -0
- data/test/test/tmposition.rb +1 -1
- data/test/test/tmreference.rb +1 -1
- data/when_exe.gemspec +2 -2
- metadata +16 -7
|
@@ -40,7 +40,7 @@ module When::Coordinates
|
|
|
40
40
|
# 日の九星のインデックス
|
|
41
41
|
#
|
|
42
42
|
# @param [When::TM::TemporalPosition] date 節月による日付
|
|
43
|
-
# @param [When::
|
|
43
|
+
# @param [When::CalendarNote::JapaneseNote::SolarTerms] s_terms
|
|
44
44
|
#
|
|
45
45
|
# @return [Integer]
|
|
46
46
|
#
|
|
@@ -69,7 +69,7 @@ module When::Coordinates
|
|
|
69
69
|
#
|
|
70
70
|
class Stem < Residue
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
Rules = {
|
|
73
73
|
'歳徳' => %w(東宮甲 西宮庚 南宮丙 北宮壬 南宮丙 東宮甲 西宮庚 南宮丙 北宮壬 南宮丙),
|
|
74
74
|
'金神' => %w(午未申酉 辰巳 子丑寅卯午未 寅卯戌亥 子丑申酉)
|
|
75
75
|
}
|
|
@@ -78,8 +78,8 @@ module When::Coordinates
|
|
|
78
78
|
# 年の十干で決まる暦注
|
|
79
79
|
# @private
|
|
80
80
|
def _year_notes(notes={}, dates=nil, conditions={})
|
|
81
|
-
notes['歳徳'] ||=
|
|
82
|
-
notes['金神'] ||=
|
|
81
|
+
notes['歳徳'] ||= Rules['歳徳'][@remainder]
|
|
82
|
+
notes['金神'] ||= Rules['金神'][@remainder % 5]
|
|
83
83
|
notes
|
|
84
84
|
end
|
|
85
85
|
|
|
@@ -124,7 +124,7 @@ module When::Coordinates
|
|
|
124
124
|
#
|
|
125
125
|
class Branch < Residue
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
Rules = {
|
|
128
128
|
'大將軍' => %w(酉 酉 子 子 子 卯 卯 卯 午 午 午 酉),
|
|
129
129
|
'大陰' => %w(戌 亥 子 丑 寅 卯 辰 巳 午 未 申 酉),
|
|
130
130
|
|
|
@@ -158,18 +158,18 @@ module When::Coordinates
|
|
|
158
158
|
# 年の十二支で決まる暦注
|
|
159
159
|
# @private
|
|
160
160
|
def _year_notes(notes={}, dates=nil, conditions={})
|
|
161
|
-
notes['大將軍'] ||=
|
|
162
|
-
notes['大陰' ] ||=
|
|
163
|
-
notes['歳刑' ] ||=
|
|
164
|
-
notes['歳破' ] ||=
|
|
165
|
-
notes['歳煞' ] ||=
|
|
166
|
-
notes['黄幡' ] ||=
|
|
167
|
-
notes['豹尾' ] ||=
|
|
161
|
+
notes['大將軍'] ||= Rules['大將軍'][@remainder]
|
|
162
|
+
notes['大陰' ] ||= Rules['大陰' ][@remainder]
|
|
163
|
+
notes['歳刑' ] ||= Rules['歳刑' ][@remainder]
|
|
164
|
+
notes['歳破' ] ||= Rules['破' ][@remainder]
|
|
165
|
+
notes['歳煞' ] ||= Rules['煞' ][@remainder % 4]
|
|
166
|
+
notes['黄幡' ] ||= Rules['黄幡' ][@remainder]
|
|
167
|
+
notes['豹尾' ] ||= Rules['豹尾' ][@remainder]
|
|
168
168
|
if dates.range < 2
|
|
169
|
-
notes['天道'] ||=
|
|
170
|
-
notes['人道'] ||=
|
|
169
|
+
notes['天道'] ||= Rules['天道' ][@remainder % 6]
|
|
170
|
+
notes['人道'] ||= Rules['人道' ][@remainder % 6]
|
|
171
171
|
else
|
|
172
|
-
notes['歳次'] ||=
|
|
172
|
+
notes['歳次'] ||= Rules['歳次' ][@remainder]
|
|
173
173
|
end
|
|
174
174
|
notes
|
|
175
175
|
end
|
|
@@ -179,22 +179,22 @@ module When::Coordinates
|
|
|
179
179
|
# @private
|
|
180
180
|
def _month_notes(notes={}, dates=nil, conditions={})
|
|
181
181
|
if dates.range < 2
|
|
182
|
-
notes['天氣'] ||=
|
|
183
|
-
notes['天道'] ||=
|
|
184
|
-
notes['人道'] ||=
|
|
185
|
-
notes['月破'] ||=
|
|
182
|
+
notes['天氣'] ||= Rules['天氣' ][@remainder] + '行'
|
|
183
|
+
notes['天道'] ||= Rules['天道' ][@remainder % 6]
|
|
184
|
+
notes['人道'] ||= Rules['人道' ][@remainder % 6]
|
|
185
|
+
notes['月破'] ||= Rules['破' ][@remainder]
|
|
186
186
|
else
|
|
187
|
-
notes['天道'] ||=
|
|
187
|
+
notes['天道'] ||= Rules['天氣' ][@remainder] + '行'
|
|
188
188
|
end
|
|
189
|
-
notes['天徳' ] ||=
|
|
190
|
-
notes['月煞' ] ||=
|
|
191
|
-
notes['用時' ] ||=
|
|
192
|
-
notes['月徳' ] ||=
|
|
193
|
-
notes['月徳合'] ||=
|
|
194
|
-
notes['月空' ] ||=
|
|
195
|
-
notes['三鏡' ] ||=
|
|
196
|
-
notes['土府' ] ||=
|
|
197
|
-
notes['土公' ] ||=
|
|
189
|
+
notes['天徳' ] ||= Rules['天徳' ][@remainder]
|
|
190
|
+
notes['月煞' ] ||= Rules['煞' ][@remainder % 4]
|
|
191
|
+
notes['用時' ] ||= Rules['用時' ][@remainder % 3]
|
|
192
|
+
notes['月徳' ] ||= Rules['月徳' ][@remainder % 4]
|
|
193
|
+
notes['月徳合'] ||= Rules['月徳合'][@remainder % 4]
|
|
194
|
+
notes['月空' ] ||= Rules['月空' ][@remainder % 4]
|
|
195
|
+
notes['三鏡' ] ||= Rules['三鏡' ][@remainder]
|
|
196
|
+
notes['土府' ] ||= Rules['土府' ][@remainder]
|
|
197
|
+
notes['土公' ] ||= Rules['土公' ][@remainder]
|
|
198
198
|
notes
|
|
199
199
|
end
|
|
200
200
|
|
|
@@ -205,10 +205,10 @@ module When::Coordinates
|
|
|
205
205
|
|
|
206
206
|
# 節月
|
|
207
207
|
month = dates.s_date.cal_date[1]
|
|
208
|
-
born =
|
|
208
|
+
born = Rules['三禍'][month-1] + '年'
|
|
209
209
|
|
|
210
210
|
# 具注暦(元嘉暦以来)
|
|
211
|
-
notes['十二直'] ||=
|
|
211
|
+
notes['十二直'] ||= Rules['十二直'][(@remainder-month-1) % 12]
|
|
212
212
|
notes['歸忌' ] ||= @remainder == (month % 3) ? '歸忌' : nil
|
|
213
213
|
notes['血忌' ] ||= @remainder == [1,7,2,8,3,9,4,10,5,11,6,0][month-1] ? '血忌' : nil
|
|
214
214
|
notes['九坎' ] ||= @remainder == [4,1,10,7,3,0,9,6,2,11,8,5][month-1] ? '九坎' : nil
|
|
@@ -225,7 +225,7 @@ module When::Coordinates
|
|
|
225
225
|
notes['狼藉' ] ||= @remainder == (dates.range >= 14 ? ((month-1) % 4) * 3 : # - wikipedia 「天火」におなじ
|
|
226
226
|
[0,3,6,6,0,3,9,9,3,3,6,9][month-1]) ? born + '狼藉' : nil # %w(...酉..午.子...)
|
|
227
227
|
notes['滅門' ] ||= @remainder == (month * 7 + 10) % 12 ? born + '滅門' : nil
|
|
228
|
-
notes['下食時'] ||= @remainder == [7,10,4,2,6,0,8,9,5,11,1,3][month-1] ?
|
|
228
|
+
notes['下食時'] ||= @remainder == [7,10,4,2,6,0,8,9,5,11,1,3][month-1] ? Rules['下食時'][month-1] : nil
|
|
229
229
|
notes['下食時'] = dates.range < 11 ? notes['下食時' ].sub(/\+/, '') : nil if /\+/ =~ notes['下食時'].to_s # '+' は貞享改暦以降記さない
|
|
230
230
|
notes['無翹' ] ||= @remainder == (12-month) % 12 ? '無翹' : nil
|
|
231
231
|
notes['不弔人'] ||= [4,6].include?(@remainder) ? '不弔人' : nil # 不断
|
|
@@ -266,9 +266,9 @@ module When::Coordinates
|
|
|
266
266
|
# @private
|
|
267
267
|
def _year_notes(notes={}, dates=nil, conditions={})
|
|
268
268
|
unless dates.range < 2
|
|
269
|
-
notes['大歳壇'] ||= '干' +
|
|
269
|
+
notes['大歳壇'] ||= '干' + Rules['大歳壇干'][(@remainder / 2) % 5] + '支' + Rules['大歳壇支'][@remainder % 12]
|
|
270
270
|
end
|
|
271
|
-
notes['納音'] ||=
|
|
271
|
+
notes['納音'] ||= Rules['納音'][@remainder / 2]
|
|
272
272
|
notes['大歳'] ||= self
|
|
273
273
|
notes
|
|
274
274
|
end
|
|
@@ -289,36 +289,37 @@ module When::Coordinates
|
|
|
289
289
|
year, month = dates.s_date.cal_date
|
|
290
290
|
|
|
291
291
|
# 具注暦(元嘉暦以来)
|
|
292
|
-
notes['納音'] ||=
|
|
293
|
-
notes['日遊'] ||= dates.range < 2 ?
|
|
292
|
+
notes['納音'] ||= Rules['納音'][@remainder / 2]
|
|
293
|
+
notes['日遊'] ||= dates.range < 2 ? Rules['日遊'][@remainder] :
|
|
294
294
|
[4,5,14,15,24,25,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,54,55].include?(@remainder) ? '内' : nil
|
|
295
295
|
notes['天赦'] ||= @remainder == [14,30,44,00][(month-1)/3] ? '天赦' : nil
|
|
296
296
|
|
|
297
297
|
# 宣明暦以前は節月、貞享暦以後は暦月
|
|
298
|
-
|
|
298
|
+
# m = dates.range < 11 ? month : (dates.m_date.cal_date[1] * 1)
|
|
299
|
+
m = month
|
|
299
300
|
# 凶会日
|
|
300
|
-
kue =
|
|
301
|
+
kue = Rules['凶会'][m-1][@remainder]
|
|
301
302
|
# 貞享暦で廃止された凶会日を除外
|
|
302
303
|
kue = dates.range < 11 ? kue.sub(/\+/, '') : nil if /\+/ =~ kue
|
|
303
304
|
notes['凶会'] = kue
|
|
304
305
|
|
|
305
306
|
# 凶会日に省略される吉日
|
|
306
|
-
_notes_without_kue(notes, month, dates.range < 2 ? '歳' : '大歳',
|
|
307
|
+
_notes_without_kue(notes, month, dates.range < 2 ? '歳' : '大歳', conditions[:sai] ? conditions[:sai].to_s != '0' : nil) unless notes['凶会']
|
|
307
308
|
|
|
308
309
|
# 具注暦(大衍暦以来)
|
|
309
310
|
notes['天一'] ||= begin
|
|
310
|
-
note =
|
|
311
|
+
note = Rules['天一'][@remainder]
|
|
311
312
|
dates.range >= 15 ? note.dup.sub!(/天上始/, '天上') :
|
|
312
313
|
dates.range >= 11 ? note : note.dup.sub!(/始/, '')
|
|
313
314
|
end
|
|
314
|
-
notes['土公'] ||=
|
|
315
|
+
notes['土公'] ||= Rules['土公'][@remainder]
|
|
315
316
|
notes['五墓'] ||= [4,22,28,31,37].include?(@remainder) ? '五墓' : nil
|
|
316
317
|
notes['伐' ] ||= [6,12,14,15,17,19,20,21,23,28,49,58].include?(@remainder) ? '伐' : nil
|
|
317
318
|
|
|
318
319
|
# 節年に依存する暦注
|
|
319
320
|
div, mod = @remainder.divmod(12)
|
|
320
|
-
base_dir =
|
|
321
|
-
move_dir =
|
|
321
|
+
base_dir = Rules['環'][year % 12]
|
|
322
|
+
move_dir = Rules['遊'][div]
|
|
322
323
|
unless base_dir == move_dir
|
|
323
324
|
event = '遊' + move_dir if mod == 0
|
|
324
325
|
event = '環' + base_dir if mod == 5
|
|
@@ -334,51 +335,51 @@ module When::Coordinates
|
|
|
334
335
|
notes['六蛇'] ||= (month-1) / 3 == 3 && [48,59].include?(@remainder) ? '六蛇' : nil
|
|
335
336
|
|
|
336
337
|
# 宣明暦以前は節月、貞享暦以後は暦月?
|
|
337
|
-
notes['三寶吉'], notes['神吉'], notes['雑事吉'], notes['小字注'] =
|
|
338
|
+
notes['三寶吉'], notes['神吉'], notes['雑事吉'], notes['小字注'] = Rules['吉事注'][m-1][@remainder]
|
|
338
339
|
|
|
339
340
|
# 仮名暦
|
|
340
341
|
unless notes['金神遊行']
|
|
341
342
|
div, mod = @remainder.divmod(12)
|
|
342
|
-
note = (2..6).include?(mod) ? '平素' +
|
|
343
|
-
range, dir =
|
|
343
|
+
note = (2..6).include?(mod) ? '平素' + Rules['平素遊行'][div] : ''
|
|
344
|
+
range, dir = Rules['四季遊行'][(month-1) / 3]
|
|
344
345
|
note += range.include?(@remainder) ? '四季' + dir : ''
|
|
345
346
|
notes['金神遊行'] = note == '' ? nil : note
|
|
346
347
|
end
|
|
347
348
|
notes['甲子待'] ||= @remainder == 0 ? '甲子待' : nil
|
|
348
349
|
notes['己巳' ] ||= @remainder == 5 ? '己巳' : nil
|
|
349
350
|
notes['庚申待'] ||= @remainder == 56 ? '庚申待' : nil
|
|
350
|
-
notes['大明' ] ||= [5,6,7,8,9,13,15,18,20,23,28,31,38,40,41,42,43,45,46,47,52,54,55,56,57].include?(@remainder) ? '大明' : nil
|
|
351
351
|
notes['犯土' ] ||= [7,8,9,10,11].include?(@remainder) ? '大犯土' : {6 =>'大犯土始', 12=>'大犯土終', 13=>'犯土間日'}[@remainder]
|
|
352
352
|
notes['犯土' ] ||= [15,16,17,18,19].include?(@remainder) ? '小犯土' : {14=>'小犯土始', 20=>'小犯土終'}[@remainder]
|
|
353
353
|
notes['十方暮'] ||= [21,22,23,24,25,26,27,28].include?(@remainder) ? '十方暮' : {20=>'十方暮始', 29=>'十方暮終'}[@remainder]
|
|
354
354
|
unless notes['八專']
|
|
355
|
-
note =
|
|
355
|
+
note = Rules['八專'][@remainder]
|
|
356
356
|
note = note.sub('始','入') if note && (9..10).include?(dates.range)
|
|
357
357
|
notes['八專'] = note
|
|
358
358
|
end
|
|
359
|
-
notes['八專間日'] ||= [49,52,54,58
|
|
359
|
+
notes['八專間日'] ||= [49,52,54,58].include?(@remainder) ? '八專間日' : nil
|
|
360
360
|
end
|
|
361
361
|
|
|
362
362
|
private
|
|
363
363
|
|
|
364
364
|
def _notes_without_kue(notes, month, daisai, variation)
|
|
365
365
|
notes['天恩'] ||= [0,3,9].include?(@remainder / 5) ? '天恩' : nil
|
|
366
|
+
notes['大明'] ||= [5,6,7,8,9,13,15,18,20,23,28,31,38,40,41,42,43,45,46,47,52,54,55,56,57].include?(@remainder) ? '大明' : nil
|
|
366
367
|
|
|
367
368
|
return notes if notes['大小歳']
|
|
368
369
|
|
|
369
|
-
|
|
370
|
-
note =
|
|
370
|
+
if variation
|
|
371
|
+
note = Rules['大小歳差分'][[month, @remainder]]
|
|
371
372
|
if note
|
|
372
373
|
notes['大小歳'] = daisai + note
|
|
373
374
|
return
|
|
374
375
|
end
|
|
375
376
|
end
|
|
376
377
|
|
|
377
|
-
index =
|
|
378
|
+
index = Rules['大小歳'][0].map {|pattern|
|
|
378
379
|
k = 4.times {|i|
|
|
379
|
-
break i if
|
|
380
|
+
break i if Rules['大小歳'][1][@remainder] =~ pattern[i]
|
|
380
381
|
}
|
|
381
|
-
k == 4 ? nil :
|
|
382
|
+
k == 4 ? nil : Rules['大小歳'][2][(k+(month-1)/3) % 4]
|
|
382
383
|
}
|
|
383
384
|
notes['大小歳'] = (index[0] ? '大小歳' + index[0] : '') +
|
|
384
385
|
(index[1] ? daisai + index[1] : '') +
|
|
@@ -386,7 +387,7 @@ module When::Coordinates
|
|
|
386
387
|
notes.delete('大小歳') if notes['大小歳'] == ''
|
|
387
388
|
end
|
|
388
389
|
|
|
389
|
-
|
|
390
|
+
Rules = {
|
|
390
391
|
'大歳壇干' => %w(木 火 土 金 水),
|
|
391
392
|
'大歳壇支' => %w(水 土 木 木 土 火 火 土 金 金 土 水),
|
|
392
393
|
'納音' => %w(海中金 爐中火 大林木 路傍土 釼鋒金 山頭火 澗下水 城頭土 白鑞金 楊柳木
|
|
@@ -0,0 +1,228 @@
|
|
|
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 TM::CalendarEra
|
|
11
|
+
|
|
12
|
+
# Japanese Luni-Solar Calendar Series for JapaneseNote
|
|
13
|
+
JapaneseLuniSolarSeries = [self, [
|
|
14
|
+
'namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]',
|
|
15
|
+
'locale:[=en:, ja=ja:, alias]',
|
|
16
|
+
'area:[JapaneseLuniSolarSeries=, 日本の暦月=]',
|
|
17
|
+
['[平朔儀鳳暦=]-660.01.01', '@F', "-660-01-01^JapaneseTwin::平朔儀鳳暦"],
|
|
18
|
+
['[元嘉暦]454.01.01', '@CR', "454-01-01^ChineseTwin::元嘉暦"],
|
|
19
|
+
['[儀鳳暦]697.01.01', '@CR', "697-01-01^ChineseTwin::麟徳暦"],
|
|
20
|
+
['[大衍暦]764.01.01', '@CR', "764-01-01^ChineseTwin::大衍暦"],
|
|
21
|
+
['[五紀暦]858.01.01', '@CR', "858-01-01^ChineseTwin::五紀暦"],
|
|
22
|
+
['[宣明暦]862.01.01', '@CR', "862-01-01^ChineseTwin::宣明暦"],
|
|
23
|
+
['[貞享乙丑暦=]1685.01.01', '@CR', "1685-01-01^JapaneseTwin::貞享乙丑暦"],
|
|
24
|
+
['[貞享暦]1687.01.01', '@CR', "1687-01-01^JapaneseTwin::貞享暦" ],
|
|
25
|
+
['[宝暦癸酉暦=]1753.01.01', '@CR', "1753-01-01^JapaneseTwin::宝暦癸酉暦"],
|
|
26
|
+
['[宝暦甲戌暦=]1754.01.01', '@CR', "1754-01-01^JapaneseTwin::宝暦甲戌暦"],
|
|
27
|
+
['[宝暦暦]1755.01.01', '@CR', "1755-01-01^JapaneseTwin::宝暦暦" ],
|
|
28
|
+
['[修正宝暦暦=]1771.01.01', '@CR', "1771-01-01^JapaneseTwin::修正宝暦暦"],
|
|
29
|
+
['[寛政暦]1798.01.01', '@CR', "1798-01-01^JapaneseTwin::寛政暦" ], # 京都平均太陽時
|
|
30
|
+
['[寛政丁亥暦]1827.01.01', '@CR', "1827-01-01^JapaneseTwin::寛政丁亥暦"], # 京都平均太陽時
|
|
31
|
+
['[天保暦]1844.01.01', '@CR', "1844-01-01^JapaneseTwin::天保暦" ], # 京都真太陽時
|
|
32
|
+
['[JLSO=,旧々暦=]1872.12.03','@CR', "1872-12-03^JapaneseTwin::旧々暦" ], # 東京平均太陽時
|
|
33
|
+
['[JLS=,旧暦]1887.11.18', '@CR', "1887-11-18^JapaneseTwin::旧暦" ] # 日本標準時
|
|
34
|
+
]]
|
|
35
|
+
|
|
36
|
+
# Japanese Solar Calendar Series for JapaneseNote
|
|
37
|
+
JapaneseSolarSeries = [self, [
|
|
38
|
+
'namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]',
|
|
39
|
+
'locale:[=en:, ja=ja:, alias]',
|
|
40
|
+
'area:[JapaneseSolarSeries=, 日本の節月=]',
|
|
41
|
+
['[平朔儀鳳暦=]-661.01.01', '@F', "-661-01-01^JapaneseTwin::平朔儀鳳暦(節月)"], # 年の始めに遡って開始(実際は12.22)
|
|
42
|
+
['[元嘉暦]454.01.12', '@CR', "454-01-12^ChineseTwin::元嘉暦(節月)"],
|
|
43
|
+
['[儀鳳暦]696.12.27', '@CR', "696-12-27^ChineseTwin::麟徳暦(節月)"],
|
|
44
|
+
['[大衍暦]764.01.06', '@CR', "764-01-06^ChineseTwin::大衍暦(節月)"],
|
|
45
|
+
['[五紀暦]857.12.19', '@CR', "857-12-19^ChineseTwin::五紀暦(節月)"],
|
|
46
|
+
['[宣明暦]862.01.03', '@CR', "862-01-03^ChineseTwin::宣明暦(節月)"],
|
|
47
|
+
['[貞享乙丑暦=]1685.01.01', '@CR', "1685-01-01^JapaneseTwin::貞享乙丑暦(節月)"],
|
|
48
|
+
['[貞享暦]1687.01.08', '@CR', "1687-01-08^JapaneseTwin::貞享暦(節月)" ],
|
|
49
|
+
['[宝暦癸酉暦=]1752.12.30', '@CR', "1752-12-30^JapaneseTwin::宝暦癸酉暦(節月)"],
|
|
50
|
+
['[宝暦甲戌暦=]1753.12.19', '@CR', "1753-12-19^JapaneseTwin::宝暦甲戌暦(節月)"],
|
|
51
|
+
['[宝暦暦]1755.01.07', '@CR', "1755-01-07^JapaneseTwin::宝暦暦(節月)" ],
|
|
52
|
+
['[修正宝暦暦=]1771.01.11', '@CR', "1771-01-11^JapaneseTwin::修正宝暦暦(節月)"],
|
|
53
|
+
['[寛政暦]1798.01.12', '@CR', "1798-01-12^JapaneseTwin::寛政暦(節月)" ],
|
|
54
|
+
['[寛政丁亥暦]1826.12.22', '@CR', "1826-12-22^JapaneseTwin::寛政丁亥暦(節月)"],
|
|
55
|
+
['[天保暦]1844.01.14', '@CR', "1844-01-14^JapaneseTwin::天保暦(節月)" ], # 京都真太陽時
|
|
56
|
+
['[JSO=,旧々暦=]1872.11.26', '@CR', "1872-11-26^JapaneseTwin::旧々暦(節月)" ], # 東京平均太陽時
|
|
57
|
+
['[JS=,旧暦]1887.11.26', '@CR', "1887-11-26^JapaneseTwin::旧暦(節月)" ] # 日本標準時
|
|
58
|
+
]]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
module CalendarTypes
|
|
62
|
+
|
|
63
|
+
_japanese_common = {
|
|
64
|
+
'year_delta' => 1, # 冬至年の変化率 / (10^(-6)日/年)
|
|
65
|
+
'year_span' => 1, # 冬至年の改訂周期 / 年
|
|
66
|
+
'lunation_length' => 29.530590, # 朔実(朔望月)
|
|
67
|
+
'lunar_mean_motion' => 13.36875, # 月平行(恒星天に対する月の平均運動 / 日)
|
|
68
|
+
'anomalistic_month_length' => 27.5546, # 転終(近点月)
|
|
69
|
+
'anomaly_method' => 'c', # (経朔-定朔)の計算方法(a:差分, b:微分, c:幾何学的補正)
|
|
70
|
+
'anomaly_precision' => 1e-5, # c 方式 での収束判定誤差 / 日
|
|
71
|
+
'lunar_unit' => 0.1, # 太陰遅速計算用招差法定数の時間の単位(限)
|
|
72
|
+
'solar_weight' => 1, # (経朔-定朔)の計算で用いる実行差での太陽盈縮の重み(0:非考慮,1:考慮)
|
|
73
|
+
'm' => [ # 太陰遅速計算用招差法定数
|
|
74
|
+
[ 0 ... 72.65342, 0, [-0, -1173_1000, +3_7000, +400]],
|
|
75
|
+
[ 72.65342...137.773, 137.773, [-0, -1324_0000, +5_2000, +500]],
|
|
76
|
+
[137.773 ...202.89258, 137.773, [+0, +1324_0000, -5_2000, -500]],
|
|
77
|
+
[202.89258.. 275.546, 275.546, [+0, +1173_1000, -3_7000, -400]]
|
|
78
|
+
],
|
|
79
|
+
's' => [ # 太陽盈縮計算用招差法定数
|
|
80
|
+
[ 0 ... 89.25392, 0, [0, +436_0000, -2_0000, -34]],
|
|
81
|
+
[ 89.25392 ...182.620848, 182.620848, [0, +411_9800, -1_7640, -31]],
|
|
82
|
+
[182.620848...275.987776, 182.620848, [0, -411_9800, +1_7640, +31]],
|
|
83
|
+
[275.987776.. 365.241696, 365.241696, [0, -436_0000, +2_0000, +34]]
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
JapaneseTwin = [{}, When::BasicTypes::M17n, ChineseSolar.twin('JapaneseTwin', [
|
|
88
|
+
"namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
|
|
89
|
+
"locale:[=ja:, en=en:, alias]",
|
|
90
|
+
"area:[日本,Japan]",
|
|
91
|
+
|
|
92
|
+
[ChineseLuniSolar,
|
|
93
|
+
'name:[平朔儀鳳暦=]',
|
|
94
|
+
'formula:MeanLunation?year_length=122357/335&lunation_length=39571/1340&day_epoch=-96608689'
|
|
95
|
+
],
|
|
96
|
+
|
|
97
|
+
[ChineseLuniSolar,
|
|
98
|
+
'name:[貞享乙丑暦=]',
|
|
99
|
+
{'formula'=>['12S', '1L'].map {|f| [
|
|
100
|
+
Ephemeris::ChineseTrueLunation, _japanese_common.merge({
|
|
101
|
+
'formula' => f,
|
|
102
|
+
'day_epoch' => 2336111 + 7.675, # 暦元天正冬至のユリウス日
|
|
103
|
+
'year_epoch' => 1684, # 暦元の西暦年
|
|
104
|
+
'year_length' => 365.241696, # 暦元の冬至年 / 日
|
|
105
|
+
'anomalistic_year_shift' => 6.445, # 暦應(冬至から近日点通過までの日数)
|
|
106
|
+
'lunation_shift' => 2.779 - 0.015, # 閏應(暦元前経朔から暦元天正冬至までの日数)
|
|
107
|
+
'anomalistic_month_shift' => 22.72 - 0.015 # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
|
|
108
|
+
})]
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
|
|
113
|
+
[ChineseLuniSolar,
|
|
114
|
+
'name:[貞享暦]',
|
|
115
|
+
{'formula'=>['12S', '1L'].map {|f| [
|
|
116
|
+
Ephemeris::ChineseTrueLunation, _japanese_common.merge({
|
|
117
|
+
'formula' => f,
|
|
118
|
+
'day_epoch' => 2336111 + 7.69 , # 暦元天正冬至のユリウス日
|
|
119
|
+
'year_epoch' => 1684, # 暦元の西暦年
|
|
120
|
+
'year_length' => 365.241696, # 暦元の冬至年 / 日
|
|
121
|
+
'anomalistic_year_shift' => 6.445, # 暦應(冬至から近日点通過までの日数)
|
|
122
|
+
'lunation_shift' => 2.779, # 閏應(暦元前経朔から暦元天正冬至までの日数)
|
|
123
|
+
'anomalistic_month_shift' => 22.72 # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
|
|
124
|
+
})]
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
|
|
129
|
+
[ChineseLuniSolar,
|
|
130
|
+
'name:[宝暦癸酉暦=]',
|
|
131
|
+
{'formula'=>['12S', '1L'].map {|f| [
|
|
132
|
+
Ephemeris::ChineseTrueLunation, _japanese_common.merge({
|
|
133
|
+
'formula' => f,
|
|
134
|
+
'day_epoch' => 2336111 + 7.9038,# 暦元天正冬至のユリウス日
|
|
135
|
+
'year_epoch' => 1684, # 暦元の西暦年
|
|
136
|
+
'year_length' => 365.241696, # 暦元の冬至年 / 日
|
|
137
|
+
'anomalistic_year_shift' => 6.445, # 暦應(冬至から近日点通過までの日数)
|
|
138
|
+
'lunation_shift' => 2.779 + 0.2138, # 閏應(暦元前経朔から暦元天正冬至までの日数)
|
|
139
|
+
'anomalistic_month_shift' => 22.72 + 0.2138 # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
|
|
140
|
+
})]
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
],
|
|
144
|
+
|
|
145
|
+
[ChineseLuniSolar,
|
|
146
|
+
'name:[宝暦甲戌暦=]',
|
|
147
|
+
{'formula'=>['12S', '1L'].map {|f| [
|
|
148
|
+
Ephemeris::ChineseTrueLunation, _japanese_common.merge({
|
|
149
|
+
'formula' => f,
|
|
150
|
+
'day_epoch' => 2336111 + 7.6223,# 暦元天正冬至のユリウス日
|
|
151
|
+
'year_epoch' => 1684, # 暦元の西暦年
|
|
152
|
+
'year_length' => 365.241696, # 暦元の冬至年 / 日
|
|
153
|
+
'anomalistic_year_shift' => 6.445, # 暦應(冬至から近日点通過までの日数)
|
|
154
|
+
'lunation_shift' => 2.779 - 0.0677, # 閏應(暦元前経朔から暦元天正冬至までの日数)
|
|
155
|
+
'anomalistic_month_shift' => 22.72 - 0.0677 # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
|
|
156
|
+
})]
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
],
|
|
160
|
+
|
|
161
|
+
[ChineseLuniSolar,
|
|
162
|
+
'name:[宝暦暦]',
|
|
163
|
+
{'formula'=>['12S', '1L'].map {|f| [
|
|
164
|
+
Ephemeris::ChineseTrueLunation, _japanese_common.merge({
|
|
165
|
+
'formula' => f,
|
|
166
|
+
'day_epoch' => 2361671 + 14.536, # 暦元天正冬至のユリウス日
|
|
167
|
+
'year_epoch' => 1754, # 暦元の西暦年
|
|
168
|
+
'year_length' => 365.241556, # 暦元の冬至年 / 日
|
|
169
|
+
'anomalistic_year_shift' => 6.455, # 暦應(冬至から近日点通過までの日数)
|
|
170
|
+
'lunation_shift' => 25.654, # 閏應(暦元前経朔から暦元天正冬至までの日数)
|
|
171
|
+
'anomalistic_month_shift' => 18.88, # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
|
|
172
|
+
's' => ChineseSolar.change_unit(365.241556 / 365.241696, _japanese_common['s'])
|
|
173
|
+
})]
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
],
|
|
177
|
+
|
|
178
|
+
[ChineseLuniSolar,
|
|
179
|
+
'name:[修正宝暦暦=]',
|
|
180
|
+
{'formula'=>['12S', '1L'].map {|f| [
|
|
181
|
+
Ephemeris::ChineseTrueLunation, _japanese_common.merge({
|
|
182
|
+
'formula' => f,
|
|
183
|
+
'day_epoch' => 2361671 + 14.681, # 暦元天正冬至のユリウス日
|
|
184
|
+
'year_epoch' => 1754, # 暦元の西暦年
|
|
185
|
+
'year_length' => 365.241626, # 暦元の冬至年 / 日
|
|
186
|
+
'anomalistic_year_shift' => 7.42, # 暦應(冬至から近日点通過までの日数)
|
|
187
|
+
'lunation_shift' => 25.82, # 閏應(暦元前経朔から暦元天正冬至までの日数)
|
|
188
|
+
'anomalistic_month_shift' => 19.307, # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
|
|
189
|
+
's' => ChineseSolar.change_unit(365.241626 / 365.241696, _japanese_common['s'])
|
|
190
|
+
})]
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
],
|
|
194
|
+
|
|
195
|
+
[ChineseLuniSolar,
|
|
196
|
+
'name:[寛政暦]',
|
|
197
|
+
'time_basis:+00,+09:03:01', # 寛政9天正冬至.107112
|
|
198
|
+
{'formula'=>['ChineseTrueLunation?day_epoch=2377391.107112&year_epoch=1797&year_length=365.242347071&year_delta=-0.217685&year_span=1000',
|
|
199
|
+
'Formula']}
|
|
200
|
+
],
|
|
201
|
+
|
|
202
|
+
[ChineseLuniSolar,
|
|
203
|
+
'name:[寛政丁亥暦]',
|
|
204
|
+
'time_basis:+00,+09:03:01', # 寛政9天正冬至.107112
|
|
205
|
+
{'formula'=>['ChineseTrueLunation?day_epoch=2377391.107112&year_epoch=1797&year_length=365.242347071&year_delta=-0.217685&year_span=10',
|
|
206
|
+
'Formula']}
|
|
207
|
+
],
|
|
208
|
+
|
|
209
|
+
[ChineseLuniSolar,
|
|
210
|
+
'name:[天保暦]',
|
|
211
|
+
'time_basis:LAT?long=135.4520E&lat=35.0117N',
|
|
212
|
+
'intercalary_span:3'
|
|
213
|
+
],
|
|
214
|
+
|
|
215
|
+
[ChineseLuniSolar,
|
|
216
|
+
'name:[旧々暦=]',
|
|
217
|
+
'time_basis:+09:18:59',
|
|
218
|
+
'intercalary_span:3'
|
|
219
|
+
],
|
|
220
|
+
|
|
221
|
+
[ChineseLuniSolar,
|
|
222
|
+
'name:[旧暦]',
|
|
223
|
+
'time_basis:+09:00',
|
|
224
|
+
'intercalary_span:3'
|
|
225
|
+
]
|
|
226
|
+
])]
|
|
227
|
+
end
|
|
228
|
+
end
|