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
|
@@ -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
|
# 七十二候
|