when_exe 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +36 -33
  3. data/bin/locales.rb +1 -1
  4. data/bin/make_ttl.rb.config +1 -1
  5. data/lib/when_exe.rb +27 -16
  6. data/lib/when_exe/basictypes.rb +772 -771
  7. data/lib/when_exe/calendartypes.rb +1485 -1453
  8. data/lib/when_exe/coordinates.rb +5 -0
  9. data/lib/when_exe/core/compatibility.rb +1 -1
  10. data/lib/when_exe/core/duration.rb +147 -116
  11. data/lib/when_exe/core/extension.rb +499 -497
  12. data/lib/when_exe/ephemeris.rb +1952 -1951
  13. data/lib/when_exe/ephemeris/eclipse.rb +5 -4
  14. data/lib/when_exe/ephemeris/notes.rb +457 -421
  15. data/lib/when_exe/ephemeris/planets.rb +585 -585
  16. data/lib/when_exe/ephemeris/sun.rb +214 -214
  17. data/lib/when_exe/google_api.rb +153 -0
  18. data/lib/when_exe/icalendar.rb +1640 -1632
  19. data/lib/when_exe/inspect.rb +42 -20
  20. data/lib/when_exe/linkeddata.rb +28 -7
  21. data/lib/when_exe/locales/autoload.rb +2 -1
  22. data/lib/when_exe/locales/locale.rb +35 -15
  23. data/lib/when_exe/locales/zh.rb +77 -0
  24. data/lib/when_exe/mini_application.rb +3 -1
  25. data/lib/when_exe/{googlecalendar.rb → obsolete/googlecalendar.rb} +144 -144
  26. data/lib/when_exe/parts/enumerator.rb +498 -486
  27. data/lib/when_exe/parts/geometric_complex.rb +397 -397
  28. data/lib/when_exe/parts/timezone.rb +246 -241
  29. data/lib/when_exe/region/armenian.rb +55 -56
  30. data/lib/when_exe/region/babylonian.rb +406 -405
  31. data/lib/when_exe/region/bahai.rb +107 -106
  32. data/lib/when_exe/region/balinese.rb +624 -622
  33. data/lib/when_exe/region/chinese.rb +1071 -1026
  34. data/lib/when_exe/region/chinese/epochs.rb +28 -28
  35. data/lib/when_exe/region/chinese/notes.rb +219 -0
  36. data/lib/when_exe/region/chinese/twins.rb +803 -803
  37. data/lib/when_exe/region/christian.rb +21 -15
  38. data/lib/when_exe/region/coptic.rb +107 -106
  39. data/lib/when_exe/region/discordian.rb +218 -218
  40. data/lib/when_exe/region/east_asian.rb +1 -1
  41. data/lib/when_exe/region/french.rb +126 -56
  42. data/lib/when_exe/region/geologicalage.rb +639 -639
  43. data/lib/when_exe/region/goddess.rb +60 -58
  44. data/lib/when_exe/region/hanke_henry.rb +2 -2
  45. data/lib/when_exe/region/indian.rb +1225 -1222
  46. data/lib/when_exe/region/international_fixed.rb +96 -97
  47. data/lib/when_exe/region/iranian.rb +206 -203
  48. data/lib/when_exe/region/islamic.rb +102 -102
  49. data/lib/when_exe/region/japanese.rb +126 -71
  50. data/lib/when_exe/region/japanese/epochs.rb +426 -426
  51. data/lib/when_exe/region/japanese/notes.rb +101 -81
  52. data/lib/when_exe/region/japanese/residues.rb +1345 -1311
  53. data/lib/when_exe/region/japanese/twins.rb +225 -225
  54. data/lib/when_exe/region/japanese/weeks.rb +112 -112
  55. data/lib/when_exe/region/javanese.rb +230 -230
  56. data/lib/when_exe/region/jewish.rb +130 -131
  57. data/lib/when_exe/region/m17n.rb +114 -114
  58. data/lib/when_exe/region/martian.rb +258 -258
  59. data/lib/when_exe/region/mayan.rb +11 -8
  60. data/lib/when_exe/region/pax.rb +4 -5
  61. data/lib/when_exe/region/pope.rb +1 -1
  62. data/lib/when_exe/region/positivist.rb +100 -100
  63. data/lib/when_exe/region/residue.rb +162 -162
  64. data/lib/when_exe/region/roman.rb +333 -333
  65. data/lib/when_exe/region/{soviet.rb → russian.rb} +221 -209
  66. data/lib/when_exe/region/shire.rb +222 -223
  67. data/lib/when_exe/region/symmetry.rb +50 -50
  68. data/lib/when_exe/region/thai.rb +336 -336
  69. data/lib/when_exe/region/tibetan.rb +315 -316
  70. data/lib/when_exe/region/tranquility.rb +207 -208
  71. data/lib/when_exe/region/vanishing_leprechaun.rb +3 -1
  72. data/lib/when_exe/region/vietnamese.rb +449 -440
  73. data/lib/when_exe/region/weekdate.rb +80 -80
  74. data/lib/when_exe/region/world.rb +170 -171
  75. data/lib/when_exe/region/world_season.rb +89 -89
  76. data/lib/when_exe/region/yerm.rb +3 -3
  77. data/lib/when_exe/region/zoroastrian.rb +205 -205
  78. data/lib/when_exe/timestandard.rb +708 -707
  79. data/lib/when_exe/tmduration.rb +338 -338
  80. data/lib/when_exe/tmobjects.rb +1356 -1356
  81. data/lib/when_exe/tmposition.rb +66 -31
  82. data/lib/when_exe/version.rb +16 -2
  83. data/test/examples/Residue.m17n +83 -83
  84. data/test/examples/Terms.m17n +2 -2
  85. data/test/test.rb +2 -2
  86. data/test/test/google_api.rb +65 -0
  87. data/test/test/linkeddata.rb +1 -1
  88. data/test/test/{googlecalendar.rb → obsolete/googlecalendar.rb} +194 -194
  89. data/test/test/region/indian.rb +90 -85
  90. data/test/test/region/m17n.rb +7 -7
  91. data/test/test/region/mayan.rb +195 -195
  92. data/test/test/region/residue.rb +153 -153
  93. data/test/test/tmposition.rb +11 -1
  94. data/when_exe.gemspec +2 -2
  95. metadata +95 -8
  96. data/test/test.rb.config +0 -1
@@ -1,225 +1,225 @@
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 Japanese Note
13
- JapaneseLuniSolar = [{}, self, [
14
- 'locale:[=ja:, en=en:]',
15
- 'area:[日本の暦月=, *JapaneseLuniSolar=]',
16
- ['[平朔儀鳳暦=]-660.01.01', '@F', '-660-01-01^JapaneseTwin::平朔儀鳳暦'],
17
- ['[元嘉暦]454.01.01', '@CR', '454-01-01^ChineseTwin::元嘉暦'],
18
- ['[儀鳳暦]697.01.01', '@CR', '697-01-01^ChineseTwin::麟徳暦'],
19
- ['[大衍暦]764.01.01', '@CR', '764-01-01^ChineseTwin::大衍暦'],
20
- ['[五紀暦]858.01.01', '@CR', '858-01-01^ChineseTwin::五紀暦'],
21
- ['[宣明暦]862.01.01', '@CR', '862-01-01^ChineseTwin::宣明暦'],
22
- ['[貞享乙丑暦=]1685.01.01', '@CR', '1685-01-01^JapaneseTwin::貞享乙丑暦'],
23
- ['[貞享暦]1687.01.01', '@CR', '1687-01-01^JapaneseTwin::貞享暦' ],
24
- ['[宝暦癸酉暦=]1753.01.01', '@CR', '1753-01-01^JapaneseTwin::宝暦癸酉暦'],
25
- ['[宝暦甲戌暦=]1754.01.01', '@CR', '1754-01-01^JapaneseTwin::宝暦甲戌暦'],
26
- ['[宝暦暦]1755.01.01', '@CR', '1755-01-01^JapaneseTwin::宝暦暦' ],
27
- ['[修正宝暦暦=]1771.01.01', '@CR', '1771-01-01^JapaneseTwin::修正宝暦暦'],
28
- ['[寛政暦]1798.01.01', '@CR', '1798-01-01^JapaneseTwin::寛政暦' ], # 京都平均太陽時
29
- ['[寛政丁亥暦=]1827.01.01', '@CR', '1827-01-01^JapaneseTwin::寛政丁亥暦'], # 京都平均太陽時
30
- ['[天保暦]1844.01.01', '@CR', '1844-01-01^JapaneseTwin#{?Clock=Clock}::天保暦'], # 京都真太陽時
31
- ['[旧々暦=,*JSO=]1872.12.03','@CR', '1872-12-03^JapaneseTwin::旧々暦' ], # 東京平均太陽時
32
- ['[旧暦,*JS=]1887.11.18', '@CR', '1887-11-18^JapaneseTwin::旧暦' ] # 日本標準時
33
- ]]
34
-
35
- # Japanese Solar Calendar Series for Japanese Note
36
- JapaneseSolar = [{}, self, [
37
- 'locale:[=ja:, en=en:]',
38
- 'area:[日本の節月=, *JapaneseSolar=]',
39
- ['[平朔儀鳳暦=]-661.01.01', '@F', '-661-01-01^JapaneseTwin::平朔儀鳳暦(節月)'], # 年の始めに遡って開始(実際は12.22)
40
- ['[元嘉暦]454.01.12', '@CR', '454-01-12^ChineseTwin::元嘉暦(節月)'],
41
- ['[儀鳳暦]696.12.27', '@CR', '696-12-27^ChineseTwin::麟徳暦(節月)'],
42
- ['[大衍暦]764.01.06', '@CR', '764-01-06^ChineseTwin::大衍暦(節月)'],
43
- ['[五紀暦]857.12.19', '@CR', '857-12-19^ChineseTwin::五紀暦(節月)'],
44
- ['[宣明暦]862.01.03', '@CR', '862-01-03^ChineseTwin::宣明暦(節月)'],
45
- ['[貞享乙丑暦=]1685.01.01', '@CR', '1685-01-01^JapaneseTwin::貞享乙丑暦(節月)'],
46
- ['[貞享暦]1687.01.08', '@CR', '1687-01-08^JapaneseTwin::貞享暦(節月)' ],
47
- ['[宝暦癸酉暦=]1752.12.30', '@CR', '1752-12-30^JapaneseTwin::宝暦癸酉暦(節月)'],
48
- ['[宝暦甲戌暦=]1753.12.19', '@CR', '1753-12-19^JapaneseTwin::宝暦甲戌暦(節月)'],
49
- ['[宝暦暦]1755.01.07', '@CR', '1755-01-07^JapaneseTwin::宝暦暦(節月)' ],
50
- ['[修正宝暦暦=]1771.01.11', '@CR', '1771-01-11^JapaneseTwin::修正宝暦暦(節月)'],
51
- ['[寛政暦]1798.01.12', '@CR', '1798-01-12^JapaneseTwin::寛政暦(節月)' ],
52
- ['[寛政丁亥暦=]1826.12.22', '@CR', '1826-12-22^JapaneseTwin::寛政丁亥暦(節月)'],
53
- ['[天保暦]1844.01.14', '@CR', '1844-01-14^JapaneseTwin#{?Clock=Clock}::天保暦(節月)'], # 京都真太陽時
54
- ['[旧々暦=,*JSO=]1872.11.26','@CR', '1872-11-26^JapaneseTwin::旧々暦(節月)' ], # 東京平均太陽時
55
- ['[旧暦,*JS=]1887.11.26', '@CR', '1887-11-26^JapaneseTwin::旧暦(節月)' ] # 日本標準時
56
- ]]
57
- end
58
-
59
- module CalendarTypes
60
-
61
- _japanese_common = {
62
- 'year_delta' => 1, # 冬至年の変化率 / (10^(-6)日/年)
63
- 'year_span' => 1, # 冬至年の改訂周期 / 年
64
- 'lunation_length' => 29.530590, # 朔実(朔望月)
65
- 'lunar_mean_motion' => 13.36875, # 月平行(恒星天に対する月の平均運動 / 日)
66
- 'anomalistic_month_length' => 27.5546, # 転終(近点月)
67
- 'anomaly_method' => 'c', # (経朔-定朔)の計算方法(a:差分, b:微分, c:幾何学的補正)
68
- 'anomaly_precision' => 1e-5, # c 方式 での収束判定誤差 / 日
69
- 'lunar_unit' => 0.1, # 太陰遅速計算用招差法定数の時間の単位(限)
70
- 'solar_weight' => 1, # (経朔-定朔)の計算で用いる実行差での太陽盈縮の重み(0:非考慮,1:考慮)
71
- 'm' => [ # 太陰遅速計算用招差法定数
72
- [ 0 ... 72.65342, 0, [-0, -1173_1000, +3_7000, +400]],
73
- [ 72.65342...137.773, 137.773, [-0, -1324_0000, +5_2000, +500]],
74
- [137.773 ...202.89258, 137.773, [+0, +1324_0000, -5_2000, -500]],
75
- [202.89258.. 275.546, 275.546, [+0, +1173_1000, -3_7000, -400]]
76
- ],
77
- 's' => [ # 太陽盈縮計算用招差法定数
78
- [ 0 ... 89.25392, 0, [0, +436_0000, -2_0000, -34]],
79
- [ 89.25392 ...182.620848, 182.620848, [0, +411_9800, -1_7640, -31]],
80
- [182.620848...275.987776, 182.620848, [0, -411_9800, +1_7640, +31]],
81
- [275.987776.. 365.241696, 365.241696, [0, -436_0000, +2_0000, +34]]
82
- ]
83
- }
84
-
85
- JapaneseTwin = [{}, When::BasicTypes::M17n, ChineseSolar.twin('JapaneseTwin', [
86
- "locale:[=ja:, en=en:, alias]",
87
- "area:[日本,Japan]",
88
-
89
- [ChineseLuniSolar,
90
- 'name:[平朔儀鳳暦=]',
91
- 'formula:MeanLunation?year_length=122357/335&lunation_length=39571/1340&day_epoch=-96608689'
92
- ],
93
-
94
- [ChineseLuniSolar,
95
- 'name:[貞享乙丑暦=]',
96
- {'formula'=>['12S', '1L'].map {|f| [
97
- Ephemeris::ChineseTrueLunation, _japanese_common.merge({
98
- 'formula' => f,
99
- 'day_epoch' => 2336111 + 7.675, # 暦元天正冬至のユリウス日
100
- 'year_epoch' => 1684, # 暦元の西暦年
101
- 'year_length' => 365.241696, # 暦元の冬至年 / 日
102
- 'anomalistic_year_shift' => 6.445, # 暦應(冬至から近日点通過までの日数)
103
- 'lunation_shift' => 2.779 - 0.015, # 閏應(暦元前経朔から暦元天正冬至までの日数)
104
- 'anomalistic_month_shift' => 22.72 - 0.015 # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
105
- })]
106
- }
107
- }
108
- ],
109
-
110
- [ChineseLuniSolar,
111
- 'name:[貞享暦]',
112
- {'formula'=>['12S', '1L'].map {|f| [
113
- Ephemeris::ChineseTrueLunation, _japanese_common.merge({
114
- 'formula' => f,
115
- 'day_epoch' => 2336111 + 7.69 , # 暦元天正冬至のユリウス日
116
- 'year_epoch' => 1684, # 暦元の西暦年
117
- 'year_length' => 365.241696, # 暦元の冬至年 / 日
118
- 'anomalistic_year_shift' => 6.445, # 暦應(冬至から近日点通過までの日数)
119
- 'lunation_shift' => 2.779, # 閏應(暦元前経朔から暦元天正冬至までの日数)
120
- 'anomalistic_month_shift' => 22.72 # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
121
- })]
122
- }
123
- }
124
- ],
125
-
126
- [ChineseLuniSolar,
127
- 'name:[宝暦癸酉暦=]',
128
- {'formula'=>['12S', '1L'].map {|f| [
129
- Ephemeris::ChineseTrueLunation, _japanese_common.merge({
130
- 'formula' => f,
131
- 'day_epoch' => 2336111 + 7.9038,# 暦元天正冬至のユリウス日
132
- 'year_epoch' => 1684, # 暦元の西暦年
133
- 'year_length' => 365.241696, # 暦元の冬至年 / 日
134
- 'anomalistic_year_shift' => 6.445, # 暦應(冬至から近日点通過までの日数)
135
- 'lunation_shift' => 2.779 + 0.2138, # 閏應(暦元前経朔から暦元天正冬至までの日数)
136
- 'anomalistic_month_shift' => 22.72 + 0.2138 # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
137
- })]
138
- }
139
- }
140
- ],
141
-
142
- [ChineseLuniSolar,
143
- 'name:[宝暦甲戌暦=]',
144
- {'formula'=>['12S', '1L'].map {|f| [
145
- Ephemeris::ChineseTrueLunation, _japanese_common.merge({
146
- 'formula' => f,
147
- 'day_epoch' => 2336111 + 7.6223,# 暦元天正冬至のユリウス日
148
- 'year_epoch' => 1684, # 暦元の西暦年
149
- 'year_length' => 365.241696, # 暦元の冬至年 / 日
150
- 'anomalistic_year_shift' => 6.445, # 暦應(冬至から近日点通過までの日数)
151
- 'lunation_shift' => 2.779 - 0.0677, # 閏應(暦元前経朔から暦元天正冬至までの日数)
152
- 'anomalistic_month_shift' => 22.72 - 0.0677 # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
153
- })]
154
- }
155
- }
156
- ],
157
-
158
- [ChineseLuniSolar,
159
- 'name:[宝暦暦]',
160
- {'formula'=>['12S', '1L'].map {|f| [
161
- Ephemeris::ChineseTrueLunation, _japanese_common.merge({
162
- 'formula' => f,
163
- 'day_epoch' => 2361671 + 14.536, # 暦元天正冬至のユリウス日
164
- 'year_epoch' => 1754, # 暦元の西暦年
165
- 'year_length' => 365.241556, # 暦元の冬至年 / 日
166
- 'anomalistic_year_shift' => 6.455, # 暦應(冬至から近日点通過までの日数)
167
- 'lunation_shift' => 25.654, # 閏應(暦元前経朔から暦元天正冬至までの日数)
168
- 'anomalistic_month_shift' => 18.88, # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
169
- 's' => ChineseSolar.change_unit(365.241556 / 365.241696, _japanese_common['s'])
170
- })]
171
- }
172
- }
173
- ],
174
-
175
- [ChineseLuniSolar,
176
- 'name:[修正宝暦暦=]',
177
- {'formula'=>['12S', '1L'].map {|f| [
178
- Ephemeris::ChineseTrueLunation, _japanese_common.merge({
179
- 'formula' => f,
180
- 'day_epoch' => 2361671 + 14.681, # 暦元天正冬至のユリウス日
181
- 'year_epoch' => 1754, # 暦元の西暦年
182
- 'year_length' => 365.241626, # 暦元の冬至年 / 日
183
- 'anomalistic_year_shift' => 7.42, # 暦應(冬至から近日点通過までの日数)
184
- 'lunation_shift' => 25.82, # 閏應(暦元前経朔から暦元天正冬至までの日数)
185
- 'anomalistic_month_shift' => 19.307, # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
186
- 's' => ChineseSolar.change_unit(365.241626 / 365.241696, _japanese_common['s'])
187
- })]
188
- }
189
- }
190
- ],
191
-
192
- [ChineseLuniSolar,
193
- 'name:[寛政暦]',
194
- 'time_basis:+00,+09:03:01', # 寛政9天正冬至.107112
195
- {'formula'=>['ChineseTrueLunation?day_epoch=2377391.107112&year_epoch=1797&year_length=365.242347071&year_delta=-0.217685&year_span=1000',
196
- 'Formula']}
197
- ],
198
-
199
- [ChineseLuniSolar,
200
- 'name:[寛政丁亥暦=]',
201
- 'time_basis:+00,+09:03:01', # 寛政9天正冬至.107112
202
- {'formula'=>['ChineseTrueLunation?day_epoch=2377391.107112&year_epoch=1797&year_length=365.242347071&year_delta=-0.217685&year_span=10',
203
- 'Formula']}
204
- ],
205
-
206
- [ChineseLuniSolar,
207
- 'name:[天保暦]',
208
- 'time_basis:#{Clock:LAT}?long=135.4520E&lat=35.0117N',
209
- 'intercalary_span:3'
210
- ],
211
-
212
- [ChineseLuniSolar,
213
- 'name:[旧々暦=]',
214
- 'time_basis:+09:18:59',
215
- 'intercalary_span:3'
216
- ],
217
-
218
- [ChineseLuniSolar,
219
- 'name:[旧暦]',
220
- 'time_basis:+09:00',
221
- 'intercalary_span:3'
222
- ]
223
- ])]
224
- end
225
- end
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2014-2015 Takashi SUGA
4
+
5
+ You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
+ =end
7
+
8
+ module When
9
+
10
+ class TM::CalendarEra
11
+
12
+ # Historical Japanese Luni-Solar Calendar for Japanese Note
13
+ JapaneseLuniSolar = [{}, self, [
14
+ 'locale:[=ja:, en=en:, zh=zh:, alias]',
15
+ 'area:[日本の暦月=, (Auto selected) JapaneseLuniSolar=, 被在日本使用陰陽曆=, *JapaneseLuniSolar=]',
16
+ ['[平朔儀鳳暦=]01.01.01', '@F', '001-01-01^JapaneseTwin::平朔儀鳳暦'], # 西暦が正になるところから開始(実際は-659.01.01)
17
+ ['[元嘉暦]454.01.01', '@CR', '454-01-01^ChineseTwin::元嘉暦', '697-01-01='],
18
+ ['[儀鳳暦]697.01.01', '@CR', '697-01-01^ChineseTwin::麟徳暦'],
19
+ ['[大衍暦]764.01.01', '@CR', '764-01-01^ChineseTwin::大衍暦'],
20
+ ['[五紀暦]858.01.01', '@CR', '858-01-01^ChineseTwin::五紀暦'],
21
+ ['[宣明暦]862.01.01', '@CR', '862-01-01^ChineseTwin::宣明暦'],
22
+ ['[貞享乙丑暦=]1685.01.01', '@CR', '1685-01-01^JapaneseTwin::貞享乙丑暦'],
23
+ ['[貞享暦]1687.01.01', '@CR', '1687-01-01^JapaneseTwin::貞享暦' ],
24
+ ['[宝暦癸酉暦=]1753.01.01', '@CR', '1753-01-01^JapaneseTwin::宝暦癸酉暦'],
25
+ ['[宝暦甲戌暦=]1754.01.01', '@CR', '1754-01-01^JapaneseTwin::宝暦甲戌暦'],
26
+ ['[宝暦暦]1755.01.01', '@CR', '1755-01-01^JapaneseTwin::宝暦暦' ],
27
+ ['[修正宝暦暦=]1771.01.01', '@CR', '1771-01-01^JapaneseTwin::修正宝暦暦'],
28
+ ['[寛政暦]1798.01.01', '@CR', '1798-01-01^JapaneseTwin::寛政暦' ], # 京都平均太陽時
29
+ ['[寛政丁亥暦=]1827.01.01', '@CR', '1827-01-01^JapaneseTwin::寛政丁亥暦'], # 京都平均太陽時
30
+ ['[天保暦]1844.01.01', '@CR', '1844-01-01^JapaneseTwin#{?Clock=Clock}::天保暦'], # 京都真太陽時
31
+ ['[旧々暦=,*JLSO=]1872.12.03','@CR','1872-12-03^JapaneseTwin::旧々暦' ], # 東京平均太陽時
32
+ ['[旧暦,*JLS=]1887.11.18', '@CR','1887-11-18^JapaneseTwin::旧暦' ] # 日本標準時
33
+ ]]
34
+
35
+ # Historical Japanese Solar Calendar for Japanese Note
36
+ JapaneseSolar = [{}, self, [
37
+ 'locale:[=ja:, en=en:, zh=zh, alias]',
38
+ 'area:[日本の節月=, (Auto selected) JapaneseSolar=, 被在日本使用陽曆=, *JapaneseSolar=]',
39
+ ['[平朔儀鳳暦=]01.01.01', '@F', '001-01-01^JapaneseTwin::平朔儀鳳暦(節月)'], # 年の始めに遡って開始
40
+ ['[元嘉暦]454.01.12', '@CR', '454-01-12^ChineseTwin::元嘉暦(節月)'],
41
+ ['[儀鳳暦]696.12.27', '@CR', '696-12-27^ChineseTwin::麟徳暦(節月)'],
42
+ ['[大衍暦]764.01.06', '@CR', '764-01-06^ChineseTwin::大衍暦(節月)'],
43
+ ['[五紀暦]857.12.19', '@CR', '857-12-19^ChineseTwin::五紀暦(節月)'],
44
+ ['[宣明暦]862.01.03', '@CR', '862-01-03^ChineseTwin::宣明暦(節月)'],
45
+ ['[貞享乙丑暦=]1685.01.01', '@CR', '1685-01-01^JapaneseTwin::貞享乙丑暦(節月)'],
46
+ ['[貞享暦]1687.01.08', '@CR', '1687-01-08^JapaneseTwin::貞享暦(節月)' ],
47
+ ['[宝暦癸酉暦=]1752.12.30', '@CR', '1752-12-30^JapaneseTwin::宝暦癸酉暦(節月)'],
48
+ ['[宝暦甲戌暦=]1753.12.19', '@CR', '1753-12-19^JapaneseTwin::宝暦甲戌暦(節月)'],
49
+ ['[宝暦暦]1755.01.07', '@CR', '1755-01-07^JapaneseTwin::宝暦暦(節月)' ],
50
+ ['[修正宝暦暦=]1771.01.11', '@CR', '1771-01-11^JapaneseTwin::修正宝暦暦(節月)', '1798.01.12='],
51
+ ['[寛政暦]1798.01.12', '@CR', '1798-01-12^JapaneseTwin::寛政暦(節月)' ],
52
+ ['[寛政丁亥暦=]1826.12.22', '@CR', '1826-12-22^JapaneseTwin::寛政丁亥暦(節月)'],
53
+ ['[天保暦]1844.01.14', '@CR', '1844-01-14^JapaneseTwin#{?Clock=Clock}::天保暦(節月)'], # 京都真太陽時
54
+ ['[旧々暦=,*JSO=]1872.11.26','@CR', '1872-11-26^JapaneseTwin::旧々暦(節月)' ], # 東京平均太陽時
55
+ ['[旧暦,*JS=]1887.11.26', '@CR', '1887-11-26^JapaneseTwin::旧暦(節月)' ] # 日本標準時
56
+ ]]
57
+ end
58
+
59
+ module CalendarTypes
60
+
61
+ _japanese_common = {
62
+ 'year_delta' => 1, # 冬至年の変化率 / (10^(-6)日/年)
63
+ 'year_span' => 1, # 冬至年の改訂周期 / 年
64
+ 'lunation_length' => 29.530590, # 朔実(朔望月)
65
+ 'lunar_mean_motion' => 13.36875, # 月平行(恒星天に対する月の平均運動 / 日)
66
+ 'anomalistic_month_length' => 27.5546, # 転終(近点月)
67
+ 'anomaly_method' => 'c', # (経朔-定朔)の計算方法(a:差分, b:微分, c:幾何学的補正)
68
+ 'anomaly_precision' => 1e-5, # c 方式 での収束判定誤差 / 日
69
+ 'lunar_unit' => 0.1, # 太陰遅速計算用招差法定数の時間の単位(限)
70
+ 'solar_weight' => 1, # (経朔-定朔)の計算で用いる実行差での太陽盈縮の重み(0:非考慮,1:考慮)
71
+ 'm' => [ # 太陰遅速計算用招差法定数
72
+ [ 0 ... 72.65342, 0, [-0, -1173_1000, +3_7000, +400]],
73
+ [ 72.65342...137.773, 137.773, [-0, -1324_0000, +5_2000, +500]],
74
+ [137.773 ...202.89258, 137.773, [+0, +1324_0000, -5_2000, -500]],
75
+ [202.89258.. 275.546, 275.546, [+0, +1173_1000, -3_7000, -400]]
76
+ ],
77
+ 's' => [ # 太陽盈縮計算用招差法定数
78
+ [ 0 ... 89.25392, 0, [0, +436_0000, -2_0000, -34]],
79
+ [ 89.25392 ...182.620848, 182.620848, [0, +411_9800, -1_7640, -31]],
80
+ [182.620848...275.987776, 182.620848, [0, -411_9800, +1_7640, +31]],
81
+ [275.987776.. 365.241696, 365.241696, [0, -436_0000, +2_0000, +34]]
82
+ ]
83
+ }
84
+
85
+ JapaneseTwin = [{}, When::BasicTypes::M17n, ChineseSolar.twin('JapaneseTwin', [
86
+ "locale:[=ja:, en=en:, alias]",
87
+ "area:[日本,Japan]",
88
+
89
+ [ChineseLuniSolar,
90
+ 'name:[平朔儀鳳暦=]',
91
+ 'formula:MeanLunation?year_length=122357/335&lunation_length=39571/1340&day_epoch=-96608689'
92
+ ],
93
+
94
+ [ChineseLuniSolar,
95
+ 'name:[貞享乙丑暦=]',
96
+ {'formula'=>['12S', '1L'].map {|f| [
97
+ Ephemeris::ChineseTrueLunation, _japanese_common.merge({
98
+ 'formula' => f,
99
+ 'day_epoch' => 2336111 + 7.675, # 暦元天正冬至のユリウス日
100
+ 'year_epoch' => 1684, # 暦元の西暦年
101
+ 'year_length' => 365.241696, # 暦元の冬至年 / 日
102
+ 'anomalistic_year_shift' => 6.445, # 暦應(冬至から近日点通過までの日数)
103
+ 'lunation_shift' => 2.779 - 0.015, # 閏應(暦元前経朔から暦元天正冬至までの日数)
104
+ 'anomalistic_month_shift' => 22.72 - 0.015 # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
105
+ })]
106
+ }
107
+ }
108
+ ],
109
+
110
+ [ChineseLuniSolar,
111
+ 'name:[貞享暦]',
112
+ {'formula'=>['12S', '1L'].map {|f| [
113
+ Ephemeris::ChineseTrueLunation, _japanese_common.merge({
114
+ 'formula' => f,
115
+ 'day_epoch' => 2336111 + 7.69 , # 暦元天正冬至のユリウス日
116
+ 'year_epoch' => 1684, # 暦元の西暦年
117
+ 'year_length' => 365.241696, # 暦元の冬至年 / 日
118
+ 'anomalistic_year_shift' => 6.445, # 暦應(冬至から近日点通過までの日数)
119
+ 'lunation_shift' => 2.779, # 閏應(暦元前経朔から暦元天正冬至までの日数)
120
+ 'anomalistic_month_shift' => 22.72 # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
121
+ })]
122
+ }
123
+ }
124
+ ],
125
+
126
+ [ChineseLuniSolar,
127
+ 'name:[宝暦癸酉暦=]',
128
+ {'formula'=>['12S', '1L'].map {|f| [
129
+ Ephemeris::ChineseTrueLunation, _japanese_common.merge({
130
+ 'formula' => f,
131
+ 'day_epoch' => 2336111 + 7.9038,# 暦元天正冬至のユリウス日
132
+ 'year_epoch' => 1684, # 暦元の西暦年
133
+ 'year_length' => 365.241696, # 暦元の冬至年 / 日
134
+ 'anomalistic_year_shift' => 6.445, # 暦應(冬至から近日点通過までの日数)
135
+ 'lunation_shift' => 2.779 + 0.2138, # 閏應(暦元前経朔から暦元天正冬至までの日数)
136
+ 'anomalistic_month_shift' => 22.72 + 0.2138 # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
137
+ })]
138
+ }
139
+ }
140
+ ],
141
+
142
+ [ChineseLuniSolar,
143
+ 'name:[宝暦甲戌暦=]',
144
+ {'formula'=>['12S', '1L'].map {|f| [
145
+ Ephemeris::ChineseTrueLunation, _japanese_common.merge({
146
+ 'formula' => f,
147
+ 'day_epoch' => 2336111 + 7.6223,# 暦元天正冬至のユリウス日
148
+ 'year_epoch' => 1684, # 暦元の西暦年
149
+ 'year_length' => 365.241696, # 暦元の冬至年 / 日
150
+ 'anomalistic_year_shift' => 6.445, # 暦應(冬至から近日点通過までの日数)
151
+ 'lunation_shift' => 2.779 - 0.0677, # 閏應(暦元前経朔から暦元天正冬至までの日数)
152
+ 'anomalistic_month_shift' => 22.72 - 0.0677 # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
153
+ })]
154
+ }
155
+ }
156
+ ],
157
+
158
+ [ChineseLuniSolar,
159
+ 'name:[宝暦暦]',
160
+ {'formula'=>['12S', '1L'].map {|f| [
161
+ Ephemeris::ChineseTrueLunation, _japanese_common.merge({
162
+ 'formula' => f,
163
+ 'day_epoch' => 2361671 + 14.536, # 暦元天正冬至のユリウス日
164
+ 'year_epoch' => 1754, # 暦元の西暦年
165
+ 'year_length' => 365.241556, # 暦元の冬至年 / 日
166
+ 'anomalistic_year_shift' => 6.455, # 暦應(冬至から近日点通過までの日数)
167
+ 'lunation_shift' => 25.654, # 閏應(暦元前経朔から暦元天正冬至までの日数)
168
+ 'anomalistic_month_shift' => 18.88, # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
169
+ 's' => ChineseSolar.change_unit(365.241556 / 365.241696, _japanese_common['s'])
170
+ })]
171
+ }
172
+ }
173
+ ],
174
+
175
+ [ChineseLuniSolar,
176
+ 'name:[修正宝暦暦=]',
177
+ {'formula'=>['12S', '1L'].map {|f| [
178
+ Ephemeris::ChineseTrueLunation, _japanese_common.merge({
179
+ 'formula' => f,
180
+ 'day_epoch' => 2361671 + 14.681, # 暦元天正冬至のユリウス日
181
+ 'year_epoch' => 1754, # 暦元の西暦年
182
+ 'year_length' => 365.241626, # 暦元の冬至年 / 日
183
+ 'anomalistic_year_shift' => 7.42, # 暦應(冬至から近日点通過までの日数)
184
+ 'lunation_shift' => 25.82, # 閏應(暦元前経朔から暦元天正冬至までの日数)
185
+ 'anomalistic_month_shift' => 19.307, # 転應(暦元前近/遠地点通過から暦元天正冬至までの日数)
186
+ 's' => ChineseSolar.change_unit(365.241626 / 365.241696, _japanese_common['s'])
187
+ })]
188
+ }
189
+ }
190
+ ],
191
+
192
+ [ChineseLuniSolar,
193
+ 'name:[寛政暦]',
194
+ 'time_basis:+00,+09:03:01', # 寛政9天正冬至.107112
195
+ {'formula'=>['ChineseTrueLunation?day_epoch=2377391.107112&year_epoch=1797&year_length=365.242347071&year_delta=-0.217685&year_span=1000',
196
+ 'Formula']}
197
+ ],
198
+
199
+ [ChineseLuniSolar,
200
+ 'name:[寛政丁亥暦=]',
201
+ 'time_basis:+00,+09:03:01', # 寛政9天正冬至.107112
202
+ {'formula'=>['ChineseTrueLunation?day_epoch=2377391.107112&year_epoch=1797&year_length=365.242347071&year_delta=-0.217685&year_span=10',
203
+ 'Formula']}
204
+ ],
205
+
206
+ [ChineseLuniSolar,
207
+ 'name:[天保暦]',
208
+ 'time_basis:#{Clock:LAT}?long=135.4520E&lat=35.0117N',
209
+ 'intercalary_span:3'
210
+ ],
211
+
212
+ [ChineseLuniSolar,
213
+ 'name:[旧々暦=]',
214
+ 'time_basis:+09:18:59',
215
+ 'intercalary_span:3'
216
+ ],
217
+
218
+ [ChineseLuniSolar,
219
+ 'name:[旧暦]',
220
+ 'time_basis:+09:00',
221
+ 'intercalary_span:3'
222
+ ]
223
+ ])]
224
+ end
225
+ end
@@ -1,112 +1,112 @@
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
- class When::CalendarNote
9
-
10
- #
11
- # 標準の暦注 + 六曜
12
- #
13
- CommonWithRokuyo = [['_m:Calendar::Month'], ['Common::Week', '_n:RokuyoWeek/Notes::day::Rokuyo']]
14
-
15
- #
16
- # 六曜
17
- #
18
- class RokuyoWeek < Week
19
-
20
- #
21
- # 暦注要素の定義
22
- #
23
- Notes = [When::BasicTypes::M17n, [
24
- "locale:[=en:, ja=ja:, alias]",
25
- "names:[Rokuyo=]",
26
-
27
- # 日の暦注 ----------------------------
28
- [When::BasicTypes::M17n,
29
- "names:[day]",
30
- [When::BasicTypes::M17n,
31
- "names:[Rokuyo=, 六曜]",
32
- [DayOfWeek, "label:[Taian=, *大安]", {'delta'=>6}],
33
- [DayOfWeek, "label:[Shakko=, *赤口]", {'delta'=>6}],
34
- [DayOfWeek, "label:[Sensho=, *先勝]", {'delta'=>6}],
35
- [DayOfWeek, "label:[Tomobiki=, *友引]", {'delta'=>6}],
36
- [DayOfWeek, "label:[Sembu=, *先負]", {'delta'=>6}],
37
- [DayOfWeek, "label:[Butsumetsu=, *仏滅]", {'delta'=>6}]
38
- ]
39
- ]
40
- ]]
41
-
42
- #
43
- # この日は何曜?
44
- #
45
- # @param [When::TM::TemporalPosition] date
46
- # @param [When::TM::CalDate] base (not used)
47
- #
48
- # @return [Hash<:value=>When::CalendarNote::Week::DayOfWeek, :position=>Array<Integer>>]
49
- #
50
- def rokuyo(date, base=nil)
51
- date = _to_date_for_note(date)
52
- y, m, d = date.cal_date
53
- index = rokuyo_index(m,d)
54
- {:value=>@days_of_week[index], :position=>[index, 6]}
55
- end
56
- alias :week :rokuyo
57
-
58
- # @private
59
- def rokuyo_value(m,d)
60
- @days_of_week[rokuyo_index(m,d)]
61
- end
62
-
63
- # @private
64
- def rokuyo_index(m,d)
65
- (m*1 + d) % 6
66
- end
67
-
68
- # @private
69
- def taian(date, base=nil)
70
- count = 0
71
- d0 = d1 = _to_date_for_note(date)
72
- r0 = r1 = nil
73
- loop do
74
- y,m,d = d1.cal_date
75
- r1 = rokuyo_index(m,d)
76
- break if r1 == 0
77
- if r0 && r1 > r0
78
- r1 = r0
79
- count -= 1
80
- break
81
- end
82
- d0 = d1
83
- r0 = r1
84
- d1 = d0 - When::P1D
85
- count += 1
86
- end
87
- date -= count if count > 0
88
- date.events = [@days_of_week[r1]]
89
- date
90
- end
91
-
92
- #
93
- # 暦日を太陰太陽暦日に変換
94
- #
95
- # @private
96
- def _to_date_for_note(date)
97
- return date if date.frame.kind_of?(When::CalendarTypes::ChineseLuniSolar)
98
- return When::Japanese ^ date if date.most_significant_coordinate >= 1873
99
- return Japanese._to_japanese_date(date)
100
- end
101
-
102
- private
103
-
104
- # オブジェクトの正規化
105
- # @private
106
- def _normalize(args=[], options={})
107
- @days_of_week ||= When.CalendarNote("RokuyoWeek/Notes::day::Rokuyo")
108
- @event ||= 'taian'
109
- super
110
- end
111
- end
112
- end
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
+ class When::CalendarNote
9
+
10
+ #
11
+ # 標準の暦注 + 六曜
12
+ #
13
+ CommonWithRokuyo = [['_m:Calendar::Month'], ['Common::Week', '_n:RokuyoWeek/Notes::day::Rokuyo']]
14
+
15
+ #
16
+ # 六曜
17
+ #
18
+ class RokuyoWeek < Week
19
+
20
+ #
21
+ # 暦注要素の定義
22
+ #
23
+ Notes = [When::BasicTypes::M17n, [
24
+ "locale:[=en:, ja=ja:, zh=ja:, alias]",
25
+ "names:[Rokuyo=]",
26
+
27
+ # 日の暦注 ----------------------------
28
+ [When::BasicTypes::M17n,
29
+ "names:[day]",
30
+ [When::BasicTypes::M17n,
31
+ "names:[Rokuyo=, 六曜, 六曜=zh:%%<六曜>]",
32
+ [DayOfWeek, "label:[Taian=, *大安, 大安]", {'delta'=>6}],
33
+ [DayOfWeek, "label:[Shakko=, *赤口, 赤口]", {'delta'=>6}],
34
+ [DayOfWeek, "label:[Sensho=, *先勝, 先勝]", {'delta'=>6}],
35
+ [DayOfWeek, "label:[Tomobiki=, *友引, 友引]", {'delta'=>6}],
36
+ [DayOfWeek, "label:[Sembu=, *先負, 先負]", {'delta'=>6}],
37
+ [DayOfWeek, "label:[Butsumetsu=, *仏滅, 仏滅]", {'delta'=>6}]
38
+ ]
39
+ ]
40
+ ]]
41
+
42
+ #
43
+ # この日は何曜?
44
+ #
45
+ # @param [When::TM::TemporalPosition] date
46
+ # @param [When::TM::CalDate] base (not used)
47
+ #
48
+ # @return [Hash<:value=>When::CalendarNote::Week::DayOfWeek, :position=>Array<Integer>>]
49
+ #
50
+ def rokuyo(date, base=nil)
51
+ date = _to_date_for_note(date)
52
+ y, m, d = date.cal_date
53
+ index = rokuyo_index(m,d)
54
+ {:value=>@days_of_week[index], :position=>[index, 6]}
55
+ end
56
+ alias :week :rokuyo
57
+
58
+ # @private
59
+ def rokuyo_value(m,d)
60
+ @days_of_week[rokuyo_index(m,d)]
61
+ end
62
+
63
+ # @private
64
+ def rokuyo_index(m,d)
65
+ (m*1 + d) % 6
66
+ end
67
+
68
+ # @private
69
+ def taian(date, base=nil)
70
+ count = 0
71
+ d0 = d1 = _to_date_for_note(date)
72
+ r0 = r1 = nil
73
+ loop do
74
+ y,m,d = d1.cal_date
75
+ r1 = rokuyo_index(m,d)
76
+ break if r1 == 0
77
+ if r0 && r1 > r0
78
+ r1 = r0
79
+ count -= 1
80
+ break
81
+ end
82
+ d0 = d1
83
+ r0 = r1
84
+ d1 = d0 - When::P1D
85
+ count += 1
86
+ end
87
+ date -= count if count > 0
88
+ date.events = [@days_of_week[r1]]
89
+ date
90
+ end
91
+
92
+ #
93
+ # 暦日を太陰太陽暦日に変換
94
+ #
95
+ # @private
96
+ def _to_date_for_note(date)
97
+ return date if date.frame.kind_of?(When::CalendarTypes::ChineseLuniSolar)
98
+ return When::Japanese ^ date if date.most_significant_coordinate >= 1873
99
+ return Japanese._to_japanese_date(date)
100
+ end
101
+
102
+ private
103
+
104
+ # オブジェクトの正規化
105
+ # @private
106
+ def _normalize(args=[], options={})
107
+ @days_of_week ||= When.CalendarNote("RokuyoWeek/Notes::day::Rokuyo")
108
+ @event ||= 'taian'
109
+ super
110
+ end
111
+ end
112
+ end