when_exe 0.3.4 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2011-
|
3
|
+
Copyright (C) 2011-2014 Takashi SUGA
|
4
4
|
|
5
5
|
You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
|
6
6
|
=end
|
@@ -11,7 +11,7 @@ module When
|
|
11
11
|
IranianTerms = [self, [
|
12
12
|
"namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/, ar=http://ar.wikipedia.org/wiki/]",
|
13
13
|
"locale:[=en:, ja=ja:, ar=ar:, alias=ja:]",
|
14
|
-
"names:[IranianTerms]",
|
14
|
+
"names:[IranianTerms=]",
|
15
15
|
"[SolarHejri=en:Iranian_calendars#Modern_calendar_.28Solar_Hejri.29, ヘジラ太陽暦=ja:%%<イラン暦>]",
|
16
16
|
|
17
17
|
[self,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
=begin
|
3
|
-
Copyright (C) 2011-
|
3
|
+
Copyright (C) 2011-2014 Takashi SUGA
|
4
4
|
|
5
5
|
You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
|
6
6
|
=end
|
@@ -11,7 +11,7 @@ module When
|
|
11
11
|
IslamicTerms = [self, [
|
12
12
|
"namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/, ar=http://ar.wikipedia.org/wiki/]",
|
13
13
|
"locale:[=en:, ja=ja:, ar=ar:, alias]",
|
14
|
-
"names:[IslamicTerms]",
|
14
|
+
"names:[IslamicTerms=]",
|
15
15
|
"[TabularIslamic=en:Islamic_calendar, イスラーム暦=ja:ヒジュラ暦]",
|
16
16
|
"[EphemerisBasedIslamic=en:Islamic_calendar, イスラーム暦=ja:ヒジュラ暦]",
|
17
17
|
|
@@ -38,7 +38,7 @@ module When
|
|
38
38
|
# ヒジュラ紀元
|
39
39
|
Hijra = [self, [
|
40
40
|
"namespace:[en=http://en.wikipedia.org/wiki/]",
|
41
|
-
"area:[Islamic]",
|
41
|
+
"area:[Islamic=]",
|
42
42
|
["[AfterHijra=en:Islamic_calendar,*alias:AH]1.1.1", "Calendar Epoch", "01-01-01^TabularIslamic"],
|
43
43
|
]]
|
44
44
|
end
|
@@ -12,7 +12,7 @@ module When
|
|
12
12
|
JapaneseTerms = [self, [
|
13
13
|
"namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
|
14
14
|
"locale:[=en:, ja=ja:, alias]",
|
15
|
-
"names:[JapaneseTerms]",
|
15
|
+
"names:[JapaneseTerms=]",
|
16
16
|
|
17
17
|
[self,
|
18
18
|
"names:[Month, 月=ja:%%<月_(暦)>]",
|
@@ -8,61 +8,7 @@
|
|
8
8
|
require 'when_exe/region/ephemeric_notes'
|
9
9
|
require 'when_exe/region/japanese_residues'
|
10
10
|
|
11
|
-
|
12
|
-
class When::TM::CalendarEra
|
13
|
-
|
14
|
-
kyoto = '?time_basis=(LAT?long=135.4520E&lat=35.0117N)'
|
15
|
-
tokyo = '?time_basis=+09:18:59'
|
16
|
-
jst = '?time_basis=+09:00&intercalary_span=3'
|
17
|
-
|
18
|
-
# Japanese Luni-Solar Calendar Series for JapaneseNote
|
19
|
-
JapaneseLuniSolarSeries = [self, [
|
20
|
-
'namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]',
|
21
|
-
'locale:[=en:, ja=ja:, alias]',
|
22
|
-
'area:[JapaneseLuniSolarSeries=, 日本の暦月=]',
|
23
|
-
['[平朔儀鳳暦=]-660.01.01', '@F', "-660-01-01^Chinese::平朔儀鳳暦"],
|
24
|
-
['[元嘉暦]454.01.01', '@CR', "454-01-01^Chinese::元嘉暦"],
|
25
|
-
['[儀鳳暦]697.01.01', '@CR', "697-01-01^Chinese::麟徳暦"],
|
26
|
-
['[大衍暦]764.01.01', '@CR', "764-01-01^Chinese::大衍暦"],
|
27
|
-
['[五紀暦]858.01.01', '@CR', "858-01-01^Chinese::五紀暦"],
|
28
|
-
['[宣明暦]862.01.01', '@CR', "862-01-01^Chinese::宣明暦"],
|
29
|
-
['[前貞享暦=]1685.01.01', '@CR', "1685-01-01^ChineseLuniSolar#{kyoto}"],
|
30
|
-
['[貞享暦]1687.01.01', '@CR', "1687-01-01^ChineseLuniSolar#{kyoto}"],
|
31
|
-
['[貞享補暦A=]1753.01.01', '@CR', "1753-01-01^ChineseLuniSolar#{kyoto}"],
|
32
|
-
['[貞享補暦B=]1754.01.01', '@CR', "1754-01-01^ChineseLuniSolar#{kyoto}"],
|
33
|
-
['[宝暦暦]1755.01.01', '@CR', "1755-01-01^ChineseLuniSolar#{kyoto}"],
|
34
|
-
['[修正宝暦暦=]1771.01.01', '@CR', "1771-01-01^ChineseLuniSolar#{kyoto}"],
|
35
|
-
['[寛政暦]1798.01.01', '@CR', "1798-01-01^ChineseLuniSolar#{kyoto}"],
|
36
|
-
['[天保暦]1844.01.01', '@CR', "1844-01-01^ChineseLuniSolar#{kyoto}"], # 京都平均太陽時
|
37
|
-
['[JLSA=,旧暦A=]1872.12.03','@CR', "1872-12-03^ChineseLuniSolar#{tokyo}"], # 東京平均太陽時
|
38
|
-
['[JLSB=,旧暦B=]1887.11.18','@CR', "1887-11-18^ChineseLuniSolar#{jst}"] # 日本標準時
|
39
|
-
]]
|
40
|
-
|
41
|
-
# Japanese Solar Calendar Series for JapaneseNote
|
42
|
-
JapaneseSolarSeries = [self, [
|
43
|
-
'namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]',
|
44
|
-
'locale:[=en:, ja=ja:, alias]',
|
45
|
-
'area:[JapaneseSolarSeries=, 日本の節月=]',
|
46
|
-
['[平朔儀鳳暦=]-661.01.01', '@F', "-661-01-01^Chinese::平朔儀鳳暦(節月)"], # 年の始めに遡って開始(実際は12.22)
|
47
|
-
['[元嘉暦]454.01.12', '@CR', "454-01-12^Chinese::元嘉暦(節月)"],
|
48
|
-
['[儀鳳暦]696.12.27', '@CR', "696-12-27^Chinese::麟徳暦(節月)"],
|
49
|
-
['[大衍暦]764.01.06', '@CR', "764-01-06^Chinese::大衍暦(節月)"],
|
50
|
-
['[五紀暦]857.12.19', '@CR', "857-12-19^Chinese::五紀暦(節月)"],
|
51
|
-
['[宣明暦]862.01.03', '@CR', "862-01-03^Chinese::宣明暦(節月)"],
|
52
|
-
['[前貞享暦=]1685.01.01', '@CR', "1685-01-01^Chinese::前貞享暦(節月)"],
|
53
|
-
['[貞享暦]1687.01.08', '@CR', "1687-01-08^Chinese::貞享暦(節月)"],
|
54
|
-
['[貞享補暦A=]1752.12.30', '@CR', "1752-12-30^Chinese::貞享補暦A(節月)"],
|
55
|
-
['[貞享補暦B=]1753.12.19', '@CR', "1753-12-19^Chinese::貞享補暦B(節月)"],
|
56
|
-
['[宝暦暦]1755.01.07', '@CR', "1755-01-07^Chinese::宝暦暦(節月)"],
|
57
|
-
['[修正宝暦暦=]1771.01.11', '@CR', "1771-01-11^Chinese::修正宝暦暦(節月)"],
|
58
|
-
['[寛政暦]1798.01.12', '@CR', "1798-01-12^Chinese::寛政暦(節月)"],
|
59
|
-
['[天保暦]1844.01.14', '@CR', "1844-01-14^ChineseSolar#{kyoto}"], # 京都平均太陽時
|
60
|
-
['[JSA=,旧暦A=]1872.11.26', '@CR', "1872-11-26^ChineseSolar#{tokyo}"], # 東京平均太陽時
|
61
|
-
['[JSB=,旧暦B=]1887.11.26', '@CR', "1887-11-26^ChineseSolar#{jst}"] # 日本標準時
|
62
|
-
]]
|
63
|
-
end
|
64
|
-
|
65
|
-
class When::CalendarTypes::CalendarNote
|
11
|
+
class When::CalendarNote
|
66
12
|
|
67
13
|
#
|
68
14
|
# 日本暦注
|
@@ -84,7 +30,7 @@ class When::CalendarTypes::CalendarNote
|
|
84
30
|
# 日本暦注の要素
|
85
31
|
#
|
86
32
|
# @private
|
87
|
-
class Note < When::
|
33
|
+
class Note < When::CalendarNote::NoteElement
|
88
34
|
end
|
89
35
|
|
90
36
|
#
|
@@ -92,7 +38,7 @@ class When::CalendarTypes::CalendarNote
|
|
92
38
|
#
|
93
39
|
NoteObjects = [When::BasicTypes::M17n, [
|
94
40
|
"namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
|
95
|
-
"locale:[=ja:]",
|
41
|
+
"locale:[=ja:, en=en:]",
|
96
42
|
"names:[日本暦注]",
|
97
43
|
|
98
44
|
# 年の暦注 ----------------------------
|
@@ -136,7 +82,7 @@ class When::CalendarTypes::CalendarNote
|
|
136
82
|
# 月の暦注 ----------------------------
|
137
83
|
[When::BasicTypes::M17n,
|
138
84
|
"names:[月]",
|
139
|
-
[Note, 0xFFFF, "label:[月名=ja:%%<月_(暦)
|
85
|
+
[Note, 0xFFFF, "label:[月名=ja:%%<月_(暦)>#%.<日本の和風月名>, Month]",
|
140
86
|
'position:月建'], # 0: 月の和名
|
141
87
|
# [Note, 0xFFFF, "label:[干支]", 'position:共通'], # 干支
|
142
88
|
# [Note, 0xFFFF, "label:[干=ja:%%<十干>]",
|
@@ -203,7 +149,7 @@ class When::CalendarTypes::CalendarNote
|
|
203
149
|
|
204
150
|
[Note, 0x07F8, "label:[甘露=]", 'position:上段 上段 上段 上段', 'suffix:日'], # 22: 七曜 廿七宿
|
205
151
|
[Note, 0x07F8, "label:[金剛峯=]", 'position:上段 上段 上段 上段'], # 23: 七曜 廿七宿
|
206
|
-
[Note, 0x07F8, "label:[羅刹=]", 'position
|
152
|
+
[Note, 0x07F8, "label:[羅刹=]", 'position:上段 上段 上段 上段'], # 24: 七曜 廿七宿
|
207
153
|
|
208
154
|
[Note, 0x3FFC, "label:[大將軍=ja:%%<大将軍_(方位神)>]",
|
209
155
|
'position:上段 上段 上段 上段', 'suffix:-'], # 25: 干支 節年
|
@@ -213,11 +159,11 @@ class When::CalendarTypes::CalendarNote
|
|
213
159
|
'position:上段 上段 上段 上段', 'suffix:-'], # 27: 干支
|
214
160
|
[Note, 0x3FFC, "label:[歳下食=ja:%%<暦注下段>#%.<歳下食>]",
|
215
161
|
'position:上段 上段 上段 上段'], # 28: 干支 節年
|
216
|
-
[Note, 0x3FFC, "label:[忌遠行=]", 'position:上段
|
217
|
-
[Note, 0x3FFC, "label:[忌夜行=]", 'position:上段
|
162
|
+
[Note, 0x3FFC, "label:[忌遠行=]", 'position:上段 上段 上段 上段'], # 29: 支 節月
|
163
|
+
[Note, 0x3FFC, "label:[忌夜行=]", 'position:上段 上段 上段 上段'], # 30: 支 節月
|
218
164
|
[Note, 0x3FFC, "label:[下食時=ja:%%<暦注下段>#%.<時下食>]",
|
219
165
|
'position:上段 上段 上段 上段', 'suffix:-'], # 31: 支 節月 貞享暦で一部廃止
|
220
|
-
[Note, 0x3FFC, "label:[天間=]", 'position:上段
|
166
|
+
[Note, 0x3FFC, "label:[天間=]", 'position:上段 上段 上段 中段上'], # 32: 干支 節月
|
221
167
|
[Note, 0x3FFC, "label:[不視病=]", 'position:上段 上段 上段 上段'], # 33: 干
|
222
168
|
[Note, 0x3FFC, "label:[不問疾=]", 'position:上段 上段 上段 上段'], # 34: 干
|
223
169
|
[Note, 0x3FFC, "label:[不弔人=]", 'position:上段 上段 上段 上段'], # 35: 支
|
@@ -229,13 +175,13 @@ class When::CalendarTypes::CalendarNote
|
|
229
175
|
[Note, 0x3FFC, "label:[沐浴=]", 'position:中段 中段 中段 中段'], # 40: 支 没滅凶会日×
|
230
176
|
[Note, 0x3FFD, "label:[臘=ja:%%<臘日>]",
|
231
177
|
'position:中段 中段 中段 中段', 'suffix:日'], # 41: 支 太陽黄経
|
232
|
-
[Note, 0x3FFC, "label:[伐=]", 'position
|
178
|
+
[Note, 0x3FFC, "label:[伐=]", 'position:中段 中段 中段 中段上', 'suffix:日'], # 42: 干支
|
233
179
|
[Note, 0x3FFC, "label:[五墓=ja:%%<暦注下段>#%.<五墓日>]",
|
234
|
-
'position
|
235
|
-
[Note, 0x3FFC, "label:[六蛇=]", 'position
|
236
|
-
[Note, 0x3FFC, "label:[七鳥=]", 'position
|
237
|
-
[Note, 0x3FFC, "label:[八龍=]", 'position
|
238
|
-
[Note, 0x3FFC, "label:[九虎=]", 'position
|
180
|
+
'position:中段 中段 中段 中段下', 'suffix:日'], # 43: 干支
|
181
|
+
[Note, 0x3FFC, "label:[六蛇=]", 'position:中段 中段 中段 中段上'], # 44: 干支 節月
|
182
|
+
[Note, 0x3FFC, "label:[七鳥=]", 'position:中段 中段 中段 中段上'], # 45: 干支 節月
|
183
|
+
[Note, 0x3FFC, "label:[八龍=]", 'position:中段 中段 中段 中段上'], # 46: 干支 節月
|
184
|
+
[Note, 0x3FFC, "label:[九虎=]", 'position:中段 中段 中段 中段上'], # 47: 干支 節月
|
239
185
|
[Note, 0x07FF, "label:[没=ja:%%<没日>]",
|
240
186
|
'position:中段 中段 中段 中段', 'suffix:日'], # 48: 太陽黄経
|
241
187
|
[Note, 0xFFF8, "label:[日食]", 'position:中段 中段 中段 中段'], # 49: 日食表
|
@@ -323,6 +269,7 @@ class When::CalendarTypes::CalendarNote
|
|
323
269
|
'position:上段 上段 中段 中段上', 'suffix:日'], #100: 干支 節月
|
324
270
|
[Note, 0x3FFF, "label:[雑事吉=]", 'position:雑事吉'], #101: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
|
325
271
|
[Note, 0x07FF, "label:[小字注=]", 'position:下段小字 下段小字 下段小字 下段小字'],#102: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
|
272
|
+
[Note, 0x3800, "label:[鬼宿]", 'position:仮名暦'], #103: 廿八宿
|
326
273
|
]
|
327
274
|
]]
|
328
275
|
|
@@ -468,6 +415,7 @@ class When::CalendarTypes::CalendarNote
|
|
468
415
|
cal4note = Cal4Note.new(date.frame, date.frame.twin)
|
469
416
|
@range =
|
470
417
|
case cal4note.l_calendar.formula[-1]
|
418
|
+
when When::Ephemeris::ChineseTrueLunation::JujiMethods ; 11 # 江戸時代の暦
|
471
419
|
when When::Ephemeris::ChineseTrueLunation
|
472
420
|
date.frame.twin =~ /戊寅|麟徳/ ? 1 : 10 # 唐代定朔暦(儀鳳暦 or 宣明暦)
|
473
421
|
when When::Ephemeris::MeanLunation ; 0 # 唐代以前平朔暦(元嘉暦)
|
@@ -487,7 +435,7 @@ class When::CalendarTypes::CalendarNote
|
|
487
435
|
@cal4note = cal4note
|
488
436
|
@o_date = date
|
489
437
|
@l_date = @cal4note.l_calendar ^ date
|
490
|
-
@m_date = date.frame.kind_of?(When::CalendarTypes::
|
438
|
+
@m_date = date.frame.kind_of?(When::CalendarTypes::Christian) ? @l_date : @o_date
|
491
439
|
@s_date = @cal4note.s_calendar ^ date
|
492
440
|
end
|
493
441
|
end
|
@@ -499,7 +447,7 @@ class When::CalendarTypes::CalendarNote
|
|
499
447
|
# @param [When::TM::TemporalPosition] date 暦注を計算する日時
|
500
448
|
# (date が When::TM::TemporalPosition でない場合、When::TM::TemporalPosition に変換して使用する)
|
501
449
|
# @param [Hash] options
|
502
|
-
# :indices, :notes およびその他のキー => {When::
|
450
|
+
# :indices, :notes およびその他のキー => {When::CalendarNote#notes} を参照
|
503
451
|
#
|
504
452
|
# @return [Hash] :notes が String の場合
|
505
453
|
# @return [Array<Hash>] 上記に該当せず、:indices が Integer の場合
|
@@ -510,18 +458,91 @@ class When::CalendarTypes::CalendarNote
|
|
510
458
|
# :position => 具注暦でのその暦注の配置場所(String)
|
511
459
|
#
|
512
460
|
def notes(date, options={})
|
513
|
-
dates, indices, notes, conditions, options = _parse_note(date, options)
|
514
|
-
|
461
|
+
dates, indices, notes, persistence, conditions, options = _parse_note(date, options)
|
462
|
+
Notes.register(indices.map {|i|
|
515
463
|
next [] unless i <= dates.precision
|
516
464
|
send(NoteMethods[i-1], dates, notes[i-1], conditions)
|
517
|
-
},
|
465
|
+
}, persistence, date.to_i)
|
466
|
+
end
|
467
|
+
|
468
|
+
# 太陽の位置 => 日時
|
469
|
+
#
|
470
|
+
# @param [When::TM::TemporalPosition] date 探す基準とする日時
|
471
|
+
# @param [Array<Numeric>] parameter 太陽の位置の分子と分母( num, den)
|
472
|
+
#
|
473
|
+
# num 分子 (デフォルト 0 : 基準日時直後の春分)
|
474
|
+
#
|
475
|
+
# den 分母 (デフォルト 360 : 検索範囲の長さ)
|
476
|
+
#
|
477
|
+
# @param [String] parameter 太陽の位置の分子と分母("#{ num }/#{ den }" の形式)
|
478
|
+
# @param [Integer] precision 取得したい時間位置の分解能(デフォルト date の分解能)
|
479
|
+
# @param [When::TM::Calendar] frame 暦法(ダミー)
|
480
|
+
#
|
481
|
+
# @return [When::TM::CalDate] date またはその直後に太陽の位置が指定の値になる日時
|
482
|
+
#
|
483
|
+
def term(date, parameter=nil, precision=date.precision, frame=nil)
|
484
|
+
dates = _to_date_for_note(date)
|
485
|
+
result = dates.cal4note.s_terms.term(date, parameter)
|
486
|
+
patch = SolarTerms::Patch[result.to_i]
|
487
|
+
return result unless patch
|
488
|
+
num, den = parameter.kind_of?(String) ? parameter.split(/\//, 2) : parameter
|
489
|
+
num = (num || 0).to_f
|
490
|
+
den = (den || 360).to_f
|
491
|
+
diff = (num - patch[0] + 1) % den - 1
|
492
|
+
return result if diff == 0
|
493
|
+
patched = result + When::DurationP1D * diff
|
494
|
+
result.cal_date[0..-2] = patched.cal_date[0..-2]
|
495
|
+
result.cal_date[-1] = When::Coordinates::Pair.new(patched.cal_date[-1], -diff)
|
496
|
+
result
|
497
|
+
end
|
498
|
+
|
499
|
+
# 月の位相 => 日時
|
500
|
+
#
|
501
|
+
# @param [When::TM::TemporalPosition] date 探す基準とする日時
|
502
|
+
# @param [Array<Numeric>] parameter 月の位相の分子と分母( num, den)
|
503
|
+
#
|
504
|
+
# num 分子 (デフォルト 0 : 基準日時直後の朔)
|
505
|
+
#
|
506
|
+
# den 分母 (デフォルト 30 : 検索範囲の長さ)
|
507
|
+
#
|
508
|
+
# @param [String] parameter 月の位相の分子と分母("#{ num }/#{ den }" の形式)
|
509
|
+
# @param [Integer] precision 取得したい時間位置の分解能(デフォルト date の分解能)
|
510
|
+
# @param [When::TM::Calendar] frame 暦法(ダミー)
|
511
|
+
#
|
512
|
+
# @return [When::TM::CalDate] date またはその直後に月の位相が指定の値になる日時
|
513
|
+
#
|
514
|
+
def phase(date, parameter=nil, precision=date.precision, frame=nil)
|
515
|
+
dates = _to_date_for_note(date)
|
516
|
+
note = dates.cal4note.l_phases
|
517
|
+
result = note.phase(date, parameter)
|
518
|
+
return result if dates.o_date.frame.kind_of?(When::CalendarTypes::Christian)
|
519
|
+
num, den = parameter.kind_of?(String) ? parameter.split(/\//, 2) : parameter
|
520
|
+
num = (num || 0).to_f
|
521
|
+
den = (den || 30).to_f
|
522
|
+
return result unless den == 30
|
523
|
+
case num % 30
|
524
|
+
when 0 # 朔
|
525
|
+
return result if result.cal_date[-1] == 1
|
526
|
+
diff = result.cal_date[-1] < 15 ? -1 : +1
|
527
|
+
when 5..25 # 弦、望
|
528
|
+
return result unless note.formula.kind_of?(When::Ephemeris::ChineseTrueLunation)
|
529
|
+
time = result.kind_of?(When::TM::DateAndTime) ? result : note.phase(date, [num,den], When::SYSTEM)
|
530
|
+
return result if time.clk_time.universal_time >= When::TM::Duration::DAY/4 # 午前6時以降
|
531
|
+
diff = -1
|
532
|
+
else # その他
|
533
|
+
return result
|
534
|
+
end
|
535
|
+
patched = result + When::DurationP1D * diff
|
536
|
+
result.cal_date[0..-2] = patched.cal_date[0..-2]
|
537
|
+
result.cal_date[-1] = When::Coordinates::Pair.new(patched.cal_date[-1], -diff)
|
538
|
+
result
|
518
539
|
end
|
519
540
|
|
520
541
|
private
|
521
542
|
|
522
543
|
# オブジェクトの正規化
|
523
544
|
def _normalize(args=[], options={})
|
524
|
-
@prime ||= [%w(干支), %w(月名), %w(干支 六曜 廿四節気 祝祭日)]
|
545
|
+
@prime ||= [%w(干支), %w(月名), %w(七曜 干支 六曜 廿四節気 祝祭日)]
|
525
546
|
super
|
526
547
|
end
|
527
548
|
|
@@ -551,7 +572,7 @@ class When::CalendarTypes::CalendarNote
|
|
551
572
|
pattern = ''
|
552
573
|
while year == month
|
553
574
|
length = month.length(When::MONTH)
|
554
|
-
length = -length if dates.o_date.frame.kind_of?(When::CalendarTypes::
|
575
|
+
length = -length if dates.o_date.frame.kind_of?(When::CalendarTypes::Christian) # 太陽暦
|
555
576
|
pattern += '閏' if month[When::MONTH] * 0 == 1
|
556
577
|
pattern += MonthPattern[length] || '改'
|
557
578
|
month += When::DurationP1M
|
@@ -590,7 +611,7 @@ class When::CalendarTypes::CalendarNote
|
|
590
611
|
# 大小
|
591
612
|
unless notes_hash['大小']
|
592
613
|
length = dates.o_date.length(When::MONTH)
|
593
|
-
length = -length if dates.o_date.frame.kind_of?(When::CalendarTypes::
|
614
|
+
length = -length if dates.o_date.frame.kind_of?(When::CalendarTypes::Christian) # 太陽暦
|
594
615
|
notes_hash['大小'] = "#{dates.o_date[When::MONTH]*0==1 ? '閏' : ''}#{MonthPattern[length] || '改'}(#{length.abs})"
|
595
616
|
end
|
596
617
|
|
@@ -607,7 +628,7 @@ class When::CalendarTypes::CalendarNote
|
|
607
628
|
_note_values(dates, notes, _all_keys[-1], _elements[-1]) do |dates, focused_notes, notes_hash|
|
608
629
|
|
609
630
|
focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-1]
|
610
|
-
root = When.Resource(
|
631
|
+
root = When.Resource('_co:CommonResidue')
|
611
632
|
|
612
633
|
# 干支
|
613
634
|
residue = dates.s_date.to_i-11
|
@@ -621,17 +642,15 @@ class When::CalendarTypes::CalendarNote
|
|
621
642
|
note._day_notes(notes_hash, dates, conditions)
|
622
643
|
end
|
623
644
|
|
624
|
-
# 廿四節気
|
625
|
-
notes_hash['廿四節気'] = _residue24(notes_hash['廿四節気'], root, dates)
|
626
|
-
|
627
645
|
# 七曜
|
628
646
|
notes_hash['七曜'] ||= root['Week'][dates.s_date.to_i % 7]
|
629
647
|
|
630
648
|
# 廿七宿
|
631
649
|
notes_hash['廿七宿'] = _residue27(notes_hash['廿七宿'], root)
|
632
650
|
|
633
|
-
# 廿八宿
|
651
|
+
# 廿八宿 / 鬼宿
|
634
652
|
notes_hash['廿八宿'] ||= root['宿'][(dates.s_date.to_i+11) % 28]
|
653
|
+
notes_hash['鬼宿'] ||= /鬼/ =~ notes_hash['廿八宿'].to_s ? '鬼宿' : nil
|
635
654
|
|
636
655
|
# 九星
|
637
656
|
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.day(dates.s_date, dates.cal4note.s_terms)]
|
@@ -672,14 +691,6 @@ class When::CalendarTypes::CalendarNote
|
|
672
691
|
nil
|
673
692
|
end
|
674
693
|
|
675
|
-
#
|
676
|
-
# 廿四節気を Resudue 化
|
677
|
-
#
|
678
|
-
def _residue24(index, root, dates)
|
679
|
-
return index unless index.kind_of?(Integer)
|
680
|
-
root['二十四節気::*'][(index-3) % 24]
|
681
|
-
end
|
682
|
-
|
683
694
|
#
|
684
695
|
# 廿七宿を Resudue 化
|
685
696
|
#
|
@@ -693,7 +704,7 @@ class When::CalendarTypes::CalendarNote
|
|
693
704
|
#
|
694
705
|
def month_stem_branch(date)
|
695
706
|
date.most_significant_coordinate*12+(date.cal_date[1] * 1) +
|
696
|
-
(date.frame.kind_of?(When::CalendarTypes::
|
707
|
+
(date.frame.kind_of?(When::CalendarTypes::Christian) ? 12 : 13)
|
697
708
|
end
|
698
709
|
end
|
699
710
|
|
@@ -923,21 +934,49 @@ class When::CalendarTypes::CalendarNote
|
|
923
934
|
phase, metsu = dates.cal4note.l_phases.position(date)
|
924
935
|
|
925
936
|
# 滅
|
926
|
-
notes['滅'] = '滅'
|
937
|
+
notes['滅'] = metsu == 2 && dates.range < 11 ? '滅' : nil
|
927
938
|
|
928
939
|
# 月相
|
929
940
|
unless notes['月相']
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
941
|
+
# イベントの判定
|
942
|
+
formula = dates.cal4note.l_phases.formula
|
943
|
+
clock = formula.kind_of?(When::Ephemeris::ChineseTrueLunation) &&
|
944
|
+
(5..25).include?(dates.l_date.cal_date[2]) ?
|
945
|
+
When.Clock(-21600) : # 唐代暦法の望弦は午前6時を日の境界とする
|
946
|
+
dates.l_date.frame._time_basis[-1] # その他(進朔も考慮した時刻)
|
947
|
+
odate = When.when?(dates.o_date.to_cal_date.to_s, {:frame=>dates.o_date.frame, :clock=>clock})
|
948
|
+
phases = formula.phase_range(odate)
|
949
|
+
thitis = phases.map {|phase| (phase % 1) * 30.0}
|
950
|
+
note = if thitis[0] >= thitis[1]
|
951
|
+
dates.o_date.frame.kind_of?(When::CalendarTypes::Christian) || conditions[:shoyo] ? '朔' : nil
|
952
|
+
else
|
953
|
+
range = thitis[0]...thitis[1]
|
936
954
|
range.include?( 7.5) ? '上弦' :
|
937
955
|
range.include?(15.0) ? '望' :
|
938
956
|
range.include?(22.5) ? '下弦' : nil
|
957
|
+
end
|
958
|
+
|
959
|
+
# 結果の反映
|
960
|
+
if conditions[:shoyo]
|
961
|
+
# :shoyo が true ならイベント時刻も返す
|
962
|
+
notes['月相'] = if note
|
963
|
+
etime = formula._to_seed_type(formula.cn_to_time((phases[1] * 4).floor / 4.0), odate)
|
964
|
+
if formula.respond_to?(:lunation_length) && formula.lunation_length.kind_of?(Rational)
|
965
|
+
shoyo = etime.clk_time.universal_time
|
966
|
+
shoyo += When::TM::Duration::DAY if (0...clock.universal_time).include?(shoyo)
|
967
|
+
shoyo = (shoyo / When::TM::Duration::DAY * formula.denominator * 1000 + 0.5).floor / 1000.0
|
968
|
+
shoyo = shoyo.to_i if shoyo == shoyo.to_i
|
969
|
+
"#{note}(#{shoyo}/#{formula.denominator})"
|
970
|
+
else
|
971
|
+
etime.events = [note]
|
972
|
+
etime
|
973
|
+
end
|
974
|
+
else
|
975
|
+
nil
|
976
|
+
end
|
939
977
|
else
|
940
|
-
|
978
|
+
# :shoyo が false ならイベン名のみ返す
|
979
|
+
notes['月相'] = note
|
941
980
|
end
|
942
981
|
end
|
943
982
|
|
@@ -1141,7 +1180,7 @@ class When::CalendarTypes::CalendarNote
|
|
1141
1180
|
def _day_notes(notes, dates, conditions={})
|
1142
1181
|
date = When.when?(dates.o_date.to_cal_date.to_s,
|
1143
1182
|
{:frame=>dates.o_date.frame,
|
1144
|
-
:clock=>dates.s_date.frame.
|
1183
|
+
:clock=>dates.s_date.frame._time_basis[0]})
|
1145
1184
|
patch = (@patch || Patch)[date.to_i] unless dates.o_date.frame.respond_to?(:twin) &&
|
1146
1185
|
dates.o_date.frame.twin
|
1147
1186
|
longitude, motsu = patch ? patch : dates.cal4note.s_terms.position(date)
|
@@ -1239,16 +1278,39 @@ class When::CalendarTypes::CalendarNote
|
|
1239
1278
|
|
1240
1279
|
# 没
|
1241
1280
|
if motsu == 0
|
1242
|
-
notes['没'] =
|
1281
|
+
notes['没'] = dates.range < 11 ? '没' : nil
|
1243
1282
|
return notes unless patch
|
1283
|
+
else
|
1284
|
+
notes['没'] = nil
|
1244
1285
|
end
|
1245
1286
|
|
1246
1287
|
# 廿四節気
|
1247
1288
|
div, mod = longitude.divmod(15)
|
1248
1289
|
if mod == 0
|
1249
|
-
|
1250
|
-
div, mod =
|
1251
|
-
notes['節中']
|
1290
|
+
note = (div - 21) % 24
|
1291
|
+
div, mod = note.divmod(2)
|
1292
|
+
notes['節中'] ||= Notes12[div] + %w(節 中)[mod]
|
1293
|
+
notes['廿四節気'] ||=
|
1294
|
+
begin
|
1295
|
+
root = When.Resource(dates.range == 1 ? '_co:CommonResidue?V=0618' : '_co:CommonResidue')
|
1296
|
+
residue = root['二十四節気::*'][(note-3) % 24]
|
1297
|
+
if conditions[:shoyo]
|
1298
|
+
formula = dates.cal4note.s_terms.formula
|
1299
|
+
etime = dates.cal4note.s_terms.term(date - When.Duration('P3D'), [0,15], When::SYSTEM)
|
1300
|
+
if formula.respond_to?(:year_length) && formula.denominator
|
1301
|
+
shoyo = etime.clk_time.universal_time
|
1302
|
+
shoyo += When::TM::Duration::DAY * (etime.to_i - date.to_i)
|
1303
|
+
shoyo = (shoyo / When::TM::Duration::DAY * formula.denominator * 1000 + 0.5).floor / 1000.0
|
1304
|
+
shoyo = shoyo.to_i if shoyo == shoyo.to_i
|
1305
|
+
residue.label + "(#{shoyo}/#{formula.denominator})"
|
1306
|
+
else
|
1307
|
+
etime.events = [residue.label]
|
1308
|
+
etime
|
1309
|
+
end
|
1310
|
+
else
|
1311
|
+
residue
|
1312
|
+
end
|
1313
|
+
end
|
1252
1314
|
end
|
1253
1315
|
|
1254
1316
|
# 七十二候
|