when_exe 0.3.6 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +171 -0
- data/lib/when_exe.rb +78 -47
- data/lib/when_exe/basictypes.rb +752 -747
- data/lib/when_exe/calendarnote.rb +805 -801
- data/lib/when_exe/calendartypes.rb +1583 -1531
- data/lib/when_exe/coordinates.rb +16 -15
- data/lib/when_exe/core/duration.rb +114 -110
- data/lib/when_exe/core/extension.rb +504 -504
- data/lib/when_exe/ephemeris.rb +1917 -1913
- data/lib/when_exe/ephemeris/moon.rb +333 -333
- data/lib/when_exe/ephemeris/notes.rb +389 -387
- data/lib/when_exe/ephemeris/planets.rb +585 -585
- data/lib/when_exe/ephemeris/sun.rb +214 -214
- data/lib/when_exe/googlecalendar.rb +144 -140
- data/lib/when_exe/icalendar.rb +1636 -1636
- data/lib/when_exe/inspect.rb +46 -22
- data/lib/when_exe/locales/akt.rb +176 -176
- data/lib/when_exe/locales/encoding_conversion.rb +134 -126
- data/lib/when_exe/locales/iast.rb +90 -90
- data/lib/when_exe/locales/locale.rb +750 -746
- data/lib/when_exe/locales/transliteration_table.rb +62 -62
- data/lib/when_exe/mini_application.rb +307 -305
- data/lib/when_exe/parts/enumerator.rb +2 -2
- data/lib/when_exe/parts/geometric_complex.rb +397 -397
- data/lib/when_exe/parts/method_cash.rb +224 -224
- data/lib/when_exe/parts/resource.rb +1069 -1071
- data/lib/when_exe/parts/timezone.rb +240 -230
- data/lib/when_exe/region/armenian.rb +56 -56
- data/lib/when_exe/region/babylonian.rb +405 -0
- data/lib/when_exe/region/bahai.rb +146 -146
- data/lib/when_exe/region/balinese.rb +622 -622
- data/lib/when_exe/region/chinese.rb +95 -25
- data/lib/when_exe/region/chinese/calendars.rb +1016 -1016
- data/lib/when_exe/region/chinese/epochs.rb +1 -1
- data/lib/when_exe/region/chinese/twins.rb +803 -795
- data/lib/when_exe/region/christian.rb +824 -824
- data/lib/when_exe/region/coptic.rb +106 -87
- data/lib/when_exe/region/discordian.rb +225 -225
- data/lib/when_exe/region/far_east.rb +188 -188
- data/lib/when_exe/region/french.rb +56 -56
- data/lib/when_exe/region/geologicalage.rb +639 -639
- data/lib/when_exe/region/goddess.rb +58 -58
- data/lib/when_exe/region/indian.rb +1254 -1251
- data/lib/when_exe/region/iranian.rb +8 -8
- data/lib/when_exe/region/islamic.rb +3 -3
- data/lib/when_exe/region/japanese.rb +93 -99
- data/lib/when_exe/region/japanese/calendars.rb +396 -397
- data/lib/when_exe/region/japanese/epochs.rb +26 -26
- data/lib/when_exe/region/japanese/nihon_shoki.rb +71 -71
- data/lib/when_exe/region/japanese/notes.rb +1383 -1386
- data/lib/when_exe/region/japanese/residues.rb +1306 -1306
- data/lib/when_exe/region/japanese/twins.rb +225 -225
- data/lib/when_exe/region/japanese/weeks.rb +112 -0
- data/lib/when_exe/region/javanese.rb +230 -230
- data/lib/when_exe/region/jewish.rb +126 -126
- data/lib/when_exe/region/korean.rb +378 -378
- data/lib/when_exe/region/m17n.rb +114 -113
- data/lib/when_exe/region/martian.rb +258 -255
- data/lib/when_exe/region/mayan.rb +32 -32
- data/lib/when_exe/region/residue.rb +89 -89
- data/lib/when_exe/region/roman.rb +36 -24
- data/lib/when_exe/region/ryukyu.rb +97 -97
- data/lib/when_exe/region/shire.rb +240 -240
- data/lib/when_exe/region/soviet.rb +209 -0
- data/lib/when_exe/region/symmetry.rb +50 -50
- data/lib/when_exe/region/thai.rb +336 -335
- data/lib/when_exe/region/tibetan.rb +316 -315
- data/lib/when_exe/region/vietnamese.rb +440 -439
- data/lib/when_exe/region/weekdate.rb +80 -80
- data/lib/when_exe/region/world.rb +175 -175
- data/lib/when_exe/region/yerm.rb +14 -14
- data/lib/when_exe/region/zoroastrian.rb +203 -203
- data/lib/when_exe/timestandard.rb +707 -681
- data/lib/when_exe/tmduration.rb +338 -330
- data/lib/when_exe/tmobjects.rb +1346 -1325
- data/lib/when_exe/tmposition.rb +2115 -2072
- data/lib/when_exe/tmreference.rb +1693 -1669
- data/lib/when_exe/version.rb +1 -1
- data/link_to_online_documents +1 -1
- data/test/examples/JapanHolidaysRFC6350.ics +1 -1
- data/test/test.rb +67 -61
- data/test/test/basictypes.rb +409 -409
- data/test/test/calendarnote.rb +86 -69
- data/test/test/calendartypes.rb +97 -97
- data/test/test/coordinates.rb +396 -396
- data/test/test/ephemeris.rb +83 -74
- data/test/test/ephemeris/moon.rb +14 -14
- data/test/test/ephemeris/planets.rb +14 -14
- data/test/test/ephemeris/sun.rb +14 -14
- data/test/test/googlecalendar.rb +194 -176
- data/test/test/icalendar.rb +867 -858
- data/test/test/inspect.rb +117 -117
- data/test/test/parts.rb +487 -487
- data/test/test/region/balinese.rb +34 -0
- data/test/test/region/chinese.rb +218 -206
- data/test/test/region/christian.rb +245 -245
- data/test/test/region/coptic.rb +27 -27
- data/test/test/region/french.rb +33 -33
- data/test/test/region/geologicalage.rb +17 -17
- data/test/test/region/indian.rb +57 -57
- data/test/test/region/iran.rb +54 -54
- data/test/test/region/islamic.rb +18 -18
- data/test/test/region/japanese.rb +237 -219
- data/test/test/region/jewish.rb +61 -61
- data/test/test/region/m17n.rb +184 -184
- data/test/test/region/mayan.rb +195 -195
- data/test/test/region/residue.rb +147 -139
- data/test/test/region/thai.rb +116 -116
- data/test/test/region/tibetan.rb +30 -30
- data/test/test/region/vietnamese.rb +102 -102
- data/test/test/region/yerm.rb +146 -146
- data/test/test/timestandard.rb +81 -81
- data/test/test/tmobjects.rb +328 -328
- data/test/test/tmposition.rb +397 -284
- data/test/test/tmreference.rb +157 -157
- metadata +13 -10
@@ -29,7 +29,7 @@ module When
|
|
29
29
|
["[天武]1", "@A", "name=[天武];0673-02-27"],
|
30
30
|
["[朱鳥]1", "", " 0686-07-20"],
|
31
31
|
["[持統]1", "@A", "name=[持統];0687-01-01"],
|
32
|
-
["[
|
32
|
+
["[文武=ja:%%<文武天皇>]1", "@A", "name=[文武=ja:%%<文武天皇>];0697-08-01"],
|
33
33
|
["[大宝]1", "@FE", " 0701-03-21"],
|
34
34
|
["[慶雲]1", "@FE", " 0704-05-10"],
|
35
35
|
["[和銅]1", "@A", "name=[元明];0708-01-11", "0710-03-10"]
|
@@ -39,31 +39,31 @@ module When
|
|
39
39
|
["[和銅]3", "@A", "name=[元明];0710-03-10^Japanese"],
|
40
40
|
["[霊亀]1", "@A", "name=[元正];0715-09-02"],
|
41
41
|
["[養老]1", "@FE", " 0717-11-17"],
|
42
|
-
["[神亀]1",
|
42
|
+
["[神亀]1","[代始・祥瑞=]","name=[聖武=ja:%%<聖武天皇>];0724-02-04"],
|
43
43
|
["[天平]1", "@FE", " 0729-08-05"],
|
44
44
|
["[天平感宝]1", "@FE", " 0749-04-14"],
|
45
45
|
["[天平勝宝]1", "@A", "name=[孝謙];0749-07-02"],
|
46
46
|
["[天平宝字]1", "@FE", " 0757-08-18",
|
47
|
-
"name=[
|
48
|
-
["[天平神護]1", "@A", "name=[
|
47
|
+
"name=[淳仁=ja:%%<淳仁天皇>];0758-08-01", '0764-01-01^Japanese#{V}', ""],
|
48
|
+
["[天平神護]1", "@A", "name=[称徳=ja:%%<称徳天皇>];0765-01-07"],
|
49
49
|
["[神護景雲]1", "@FE", " 0767-08-16"],
|
50
50
|
["[宝亀]1", "[代始・祥瑞]", "name=[光仁];0770-10-01"],
|
51
51
|
["[天応]1", "@FE", " 0781-01-01"],
|
52
|
-
["[延暦]1", "@A", "name=[
|
52
|
+
["[延暦]1", "@A", "name=[桓武=ja:%%<桓武天皇>];0782-08-19", "0794-10-22"]
|
53
53
|
],
|
54
54
|
[self,
|
55
55
|
"period:[平安時代]",
|
56
|
-
["[延暦]13", "", 'name=[
|
56
|
+
["[延暦]13", "", 'name=[桓武=ja:%%<桓武天皇>];0794-10-22^Japanese#{V}'],
|
57
57
|
["[大同]1", "@A", "name=[平城];0806-05-18"],
|
58
58
|
["[弘仁]1", "@A", "name=[嵯峨];0810-09-19"],
|
59
|
-
["[天長]1", "@A", "name=[
|
60
|
-
["[承和]1", "@A", "name=[
|
59
|
+
["[天長]1", "@A", "name=[淳和=ja:%%<淳和天皇>];0824-01-05"],
|
60
|
+
["[承和]1", "@A", "name=[仁明=ja:%%<仁明天皇>];0834-01-03"],
|
61
61
|
["[嘉祥]1", "@FE", " 0848-06-13"],
|
62
|
-
["[仁寿]1",
|
62
|
+
["[仁寿]1","[代始・祥瑞=]","name=[文徳];0851-04-28"],
|
63
63
|
["[斉衡]1", "@FE", " 0854-11-30"],
|
64
64
|
["[天安]1", "@FE", " 0857-02-21"],
|
65
65
|
["[貞観]1", "@A", "name=[清和];0859-04-15", "0862-01-01^Japanese", ""],
|
66
|
-
["[元慶]1",
|
66
|
+
["[元慶]1","[代始・祥瑞=]","name=[陽成];0877-04-16"],
|
67
67
|
["[仁和]1", "@A", "name=[光孝];0885-02-21"],
|
68
68
|
["[寛平]1", "@A", "name=[宇多];0889-04-27"],
|
69
69
|
["[昌泰]1", "@A", "name=[醍醐];0898-04-26"],
|
@@ -73,8 +73,8 @@ module When
|
|
73
73
|
["[天慶]1", "@ND", " 0938-05-22"],
|
74
74
|
["[天暦]1", "@A", "name=[村上];0947-04-22"],
|
75
75
|
["[天徳]1", "@ND", " 0957-10-27"],
|
76
|
-
["[応和]1", "[
|
77
|
-
["[康保]1", "[
|
76
|
+
["[応和]1", "[災異・革年=]"," 0961-02-16"],
|
77
|
+
["[康保]1", "[災異・革年=]"," 0964-07-10"],
|
78
78
|
["[安和]1", "@A", "name=[冷泉];0968-08-13"],
|
79
79
|
["[天禄]1", "@A", "name=[円融];0970-03-25"],
|
80
80
|
["[天延]1", "@ND", " 0973-12-20"],
|
@@ -105,7 +105,7 @@ module When
|
|
105
105
|
["[承暦]1", "@ND", " 1077-11-17"],
|
106
106
|
["[永保]1", "@IY", " 1081-02-10"],
|
107
107
|
["[応徳]1", "@IY", " 1084-02-07"],
|
108
|
-
["[寛治]1", "@A", "name=[
|
108
|
+
["[寛治]1", "@A", "name=[堀河=ja:%%<堀河天皇>];1087-04-07"],
|
109
109
|
["[嘉保]1", "@ND", " 1094-12-15"],
|
110
110
|
["[永長]1", "@ND", " 1096-12-17"],
|
111
111
|
["[承徳]1", "@ND", " 1097-11-21"],
|
@@ -139,15 +139,15 @@ module When
|
|
139
139
|
["[承安]1", "@ND", " 1171-04-21"],
|
140
140
|
["[安元]1", "@ND", " 1175-07-28"],
|
141
141
|
["[治承]1", "@ND", " 1177-08-04"],
|
142
|
-
["[養和]1", "@A", "name=[
|
142
|
+
["[養和]1", "@A", "name=[安徳=ja:%%<安徳天皇>];1181-07-14"],
|
143
143
|
["[寿永]1", "@ND", " 1182-05-27", "1183-08-20"]
|
144
144
|
],
|
145
145
|
[self,
|
146
|
-
"period:[
|
146
|
+
"period:[平氏方=ja:%%<平氏>]",
|
147
147
|
["[寿永]2", "", " 1183-08-20^Japanese", "1185-03-24="]
|
148
148
|
],
|
149
149
|
[self,
|
150
|
-
"period:[
|
150
|
+
"period:[源氏方=ja:%%<源氏>]",
|
151
151
|
["[治承]5", "", "name=[高倉];1181-07-14^Japanese"],
|
152
152
|
["[元暦]1", "@A", "name=[後鳥羽];1184-04-16", "1185-03-24="]
|
153
153
|
],
|
@@ -156,7 +156,7 @@ module When
|
|
156
156
|
["[元暦]2", "", "name=[後鳥羽];1185-03-24=^Japanese"],
|
157
157
|
["[文治]1", "@ND", " 1185-08-14"],
|
158
158
|
["[建久]1", "@ND", " 1190-04-11"],
|
159
|
-
["[正治]1", "@A", "name=[
|
159
|
+
["[正治]1", "@A", "name=[土御門=ja:%%<土御門天皇>];1199-04-27"],
|
160
160
|
["[建仁]1", "@IY", " 1201-02-13"],
|
161
161
|
["[元久]1", "@IY", " 1204-02-20"],
|
162
162
|
["[建永]1", "@ND", " 1206-04-27"],
|
@@ -164,7 +164,7 @@ module When
|
|
164
164
|
["[建暦]1", "@A", "name=[順徳];1211-03-09"],
|
165
165
|
["[建保]1", "@ND", " 1213-12-06"],
|
166
166
|
["[承久]1", "@ND", " 1219-04-12",
|
167
|
-
"name=[
|
167
|
+
"name=[仲恭=ja:%%<仲恭天皇>];1221-04-20", ""],
|
168
168
|
["[貞応]1", "@A", "name=[後堀河];1222-04-13"],
|
169
169
|
["[元仁]1", "@ND", " 1224-11-20"],
|
170
170
|
["[嘉禄]1", "@ND", " 1225-04-20"],
|
@@ -208,7 +208,7 @@ module When
|
|
208
208
|
[self,
|
209
209
|
"period:[大覚寺統]",
|
210
210
|
["[元弘]3", "", "name=[後醍醐];1333-05-18^Japanese"],
|
211
|
-
["[建武]1", "[
|
211
|
+
["[建武]1", "[撥乱帰正=]"," 1334-01-29", "1336-02-29"]
|
212
212
|
],
|
213
213
|
[self,
|
214
214
|
"period:[南朝]",
|
@@ -245,7 +245,7 @@ module When
|
|
245
245
|
["[永和]1", "@A", " 1375-02-27"],
|
246
246
|
["[康暦]1", "@ND", " 1379-03-22"],
|
247
247
|
["[永徳]1", "@IY", " 1381-02-24"],
|
248
|
-
["[至徳]1", "[
|
248
|
+
["[至徳]1", "[代始・革年=]", "name=[後小松];1384-02-27"],
|
249
249
|
["[嘉慶]1", "@ND", " 1387-08-23"],
|
250
250
|
["[康応]1", "@ND", " 1389-02-09"],
|
251
251
|
["[明徳]1", "@ND", " 1390-03-26", "1392-10=06"]
|
@@ -254,7 +254,7 @@ module When
|
|
254
254
|
"period:[室町時代]",
|
255
255
|
["[明徳]3", "", "name=[後小松];1392-10=06^Japanese"],
|
256
256
|
["[応永]1", "@ND", " 1394-07-05",
|
257
|
-
"name=[
|
257
|
+
"name=[称光=ja:%%<称光天皇>];1412-08-29", ""],
|
258
258
|
["[正長]1", "", " 1428-04-27"],
|
259
259
|
["[永享]1", "@A", "name=[後花園];1429-09-05"],
|
260
260
|
["[嘉吉]1", "@IY", " 1441-02-17"],
|
@@ -270,7 +270,7 @@ module When
|
|
270
270
|
["[長享]1", "@ND", " 1487-07-20"],
|
271
271
|
["[延徳]1", "@ND", " 1489-08-21"],
|
272
272
|
["[明応]1", "@ND", " 1492-07-19"],
|
273
|
-
["[文亀]1", "[
|
273
|
+
["[文亀]1", "[代始・革年=]", "name=[後柏原];1501-02-29"],
|
274
274
|
["[永正]1", "@IY", " 1504-02-30"],
|
275
275
|
["[大永]1", "@ND", " 1521-08-23"],
|
276
276
|
["[享禄]1", "@A", "name=[後奈良];1528-08-20"],
|
@@ -290,7 +290,7 @@ module When
|
|
290
290
|
"period:[江戸時代]",
|
291
291
|
["[慶長]8", "", "name=[後陽成];1603-02-12^Japanese",
|
292
292
|
"name=[後水尾];1611-03-27", ""],
|
293
|
-
["[元和]1", "[
|
293
|
+
["[元和]1", "[代始・災異=]"," 1615-07-13"],
|
294
294
|
["[寛永]1", "@IY", " 1624-02-30",
|
295
295
|
"name=[明正];1629-11-08", ""],
|
296
296
|
["[正保]1", "@A", "name=[後光明];1644-12-16"],
|
@@ -306,19 +306,19 @@ module When
|
|
306
306
|
["[元禄]1", "@A", "name=[東山];1688-09-30"],
|
307
307
|
["[宝永]1", "@ND", " 1704-03-13"],
|
308
308
|
["[正徳]1", "@A", "name=[中御門];1711-04-25"],
|
309
|
-
["[享保]1", "[
|
309
|
+
["[享保]1", "[関東凶事=]"," 1716-06-22"],
|
310
310
|
["[元文]1", "@A", "name=[桜町];1736-04-28"],
|
311
311
|
["[寛保]1", "@IY", " 1741-02-27"],
|
312
312
|
["[延享]1", "@IY", " 1744-02-21"],
|
313
313
|
["[寛延]1", "@A", "name=[桃園];1748-07-12"],
|
314
314
|
["[宝暦]1", "", " 1751-10-27"],
|
315
315
|
["[明和]1", "@A", "name=[後桜町];1764-06-02"],
|
316
|
-
["[安永]1", "[
|
316
|
+
["[安永]1", "[代始・災異=]", "name=[後桃園];1772-11-16"],
|
317
317
|
["[天明]1", "@A", "name=[光格];1781-04-02"],
|
318
318
|
["[寛政]1", "@ND", " 1789-01-25"],
|
319
319
|
["[享和]1", "@IY", " 1801-02-05"],
|
320
320
|
["[文化]1", "@IY", " 1804-02-11"],
|
321
|
-
["[文政]1", "@A", "name=[
|
321
|
+
["[文政]1", "@A", "name=[仁孝=ja:%%<仁孝天皇>];1818-04-22"],
|
322
322
|
["[天保]1", "@ND", " 1830-12-10"],
|
323
323
|
["[弘化]1", "@ND", " 1844-12-02"],
|
324
324
|
["[嘉永]1", "@A", "name=[孝明];1848-02-28"],
|
@@ -1,71 +1,71 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
=begin
|
3
|
-
Copyright (C) 2011-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::TM::CalendarEra
|
9
|
-
|
10
|
-
#
|
11
|
-
# 皇紀
|
12
|
-
#
|
13
|
-
NihonKoki = [self, [
|
14
|
-
"locale:[=ja:, en=en:, alias]",
|
15
|
-
"area:[日本]",
|
16
|
-
["[皇紀]1", "@A", "-659-01-01^JapaneseTwin::平朔儀鳳暦"],
|
17
|
-
["[皇紀]1113", "@CR", "0453-12-14^ChineseTwin::元嘉暦"],
|
18
|
-
["[皇紀]1253", "", "0593-01-01^Japanese"],
|
19
|
-
["[皇紀]2533", "@CR", "1873-01-01^Gregorian"]
|
20
|
-
]]
|
21
|
-
|
22
|
-
#
|
23
|
-
# 日本書紀暦日
|
24
|
-
#
|
25
|
-
NihonShoki = [self, [
|
26
|
-
"locale:[=ja:, en=en:, alias]",
|
27
|
-
"period:[(日本書紀)=ja:%%<日本書紀>, (Nihon_Shoki)=en:Nihon_Shoki]",
|
28
|
-
["[神武]1", "@A", "name=[神武];-659-01-01^JapaneseTwin::平朔儀鳳暦"],
|
29
|
-
["[綏靖]1", "@A", "name=[綏靖];-580-01-08"],
|
30
|
-
["[安寧]0", "@A", "name=[安寧];-548-07-03"],
|
31
|
-
["[懿徳]1", "@A", "name=[懿徳];-509-02-04"],
|
32
|
-
["[孝昭]1", "@A", "name=[孝昭];-474-01-09"],
|
33
|
-
["[孝安]1", "@A", "name=[孝安];-391-01-07"],
|
34
|
-
["[孝霊]1", "@A", "name=[孝霊];-289-01-12"],
|
35
|
-
["[孝元]1", "@A", "name=[孝元];-213-01-14"],
|
36
|
-
["[開化]0", "@A", "name=[開化];-157-11-12"],
|
37
|
-
["[崇神]1", "@A", "name=[崇神];-096-01-13"],
|
38
|
-
["[垂仁]1", "@A", "name=[垂仁];-028-01-02"],
|
39
|
-
["[景行]1", "@A", "name=[景行];0071-07-11"],
|
40
|
-
["[成務]1", "@A", "name=[成務];0131-01-05"],
|
41
|
-
["[仲哀]1", "@A", "name=[仲哀];0192-01-11"],
|
42
|
-
["[神功皇后]0","@A","name=[神功皇后];0200-02-07"],
|
43
|
-
["[応神]1", "@A", "name=[応神];0270-01-01"],
|
44
|
-
["[仁徳]1", "@A", "name=[仁徳];0313-01-03"],
|
45
|
-
["[履中]1", "@A", "name=[履中];0400-02-01"],
|
46
|
-
["[反正]1", "@A", "name=[反正];0406-01-02"],
|
47
|
-
["[允恭]1", "@A", "name=[允恭];0412-12"],
|
48
|
-
["[安康]0", "@A", "name=[安康];0453-12-14^ChineseTwin::元嘉暦"],
|
49
|
-
["[雄略]0", "@A", "name=[雄略];0456-11-13"],
|
50
|
-
["[清寧]1", "@A", "name=[清寧];0480-01-15"],
|
51
|
-
["[顕宗]1", "@A", "name=[顕宗];0485-01-01"],
|
52
|
-
["[仁賢]1", "@A", "name=[仁賢];0488-01-05"],
|
53
|
-
["[武烈]0", "@A", "name=[武烈];0498-12"],
|
54
|
-
["[継体]1", "@A", "name=[継体];0507-02-04"],
|
55
|
-
["[安閑]1", "@A", "name=[安閑];0534"],
|
56
|
-
["[宣化]0", "@A", "name=[宣化];0535-12"],
|
57
|
-
["[欽明]0", "@A", "name=[欽明];0539-12-05"],
|
58
|
-
["[敏達]1", "@A", "name=[敏達];0572-04-03"],
|
59
|
-
["[用明]0", "@A", "name=[用明];0585-09-05"],
|
60
|
-
["[崇峻]0", "@A", "name=[崇峻];0587-08-02"],
|
61
|
-
["[推古]0", "@A", "name=[推古];0592-12-08"],
|
62
|
-
["[舒明]1", "@A", "name=[舒明];0629-01-04"],
|
63
|
-
["[皇極]1", "@A", "name=[皇極];0642-01-15"],
|
64
|
-
["[大化]1", "@A", "name=[孝徳];0645-06-19"],
|
65
|
-
["[白雉]1", "@FE", " 0650-02-15"],
|
66
|
-
["[斉明]1", "@A", "name=[斉明];0655-01-03"],
|
67
|
-
["[天智]1", "@A", "name=[天智];0662-01-01"],
|
68
|
-
["[天武]1", "@A", "name=[天武];0672-01-01"],
|
69
|
-
["[朱鳥]1", "", " 0686-07-20", "0687-01-01"]
|
70
|
-
]]
|
71
|
-
end
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
=begin
|
3
|
+
Copyright (C) 2011-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::TM::CalendarEra
|
9
|
+
|
10
|
+
#
|
11
|
+
# 皇紀
|
12
|
+
#
|
13
|
+
NihonKoki = [self, [
|
14
|
+
"locale:[=ja:, en=en:, alias]",
|
15
|
+
"area:[日本]",
|
16
|
+
["[皇紀]1", "@A", "-659-01-01^JapaneseTwin::平朔儀鳳暦"],
|
17
|
+
["[皇紀]1113", "@CR", "0453-12-14^ChineseTwin::元嘉暦"],
|
18
|
+
["[皇紀]1253", "", "0593-01-01^Japanese"],
|
19
|
+
["[皇紀]2533", "@CR", "1873-01-01^Gregorian"]
|
20
|
+
]]
|
21
|
+
|
22
|
+
#
|
23
|
+
# 日本書紀暦日
|
24
|
+
#
|
25
|
+
NihonShoki = [self, [
|
26
|
+
"locale:[=ja:, en=en:, alias]",
|
27
|
+
"period:[(日本書紀)=ja:%%<日本書紀>, (Nihon_Shoki)=en:Nihon_Shoki]",
|
28
|
+
["[神武]1", "@A", "name=[神武];-659-01-01^JapaneseTwin::平朔儀鳳暦"],
|
29
|
+
["[綏靖]1", "@A", "name=[綏靖];-580-01-08"],
|
30
|
+
["[安寧]0", "@A", "name=[安寧];-548-07-03"],
|
31
|
+
["[懿徳]1", "@A", "name=[懿徳];-509-02-04"],
|
32
|
+
["[孝昭]1", "@A", "name=[孝昭];-474-01-09"],
|
33
|
+
["[孝安]1", "@A", "name=[孝安];-391-01-07"],
|
34
|
+
["[孝霊]1", "@A", "name=[孝霊];-289-01-12"],
|
35
|
+
["[孝元]1", "@A", "name=[孝元];-213-01-14"],
|
36
|
+
["[開化]0", "@A", "name=[開化];-157-11-12"],
|
37
|
+
["[崇神]1", "@A", "name=[崇神];-096-01-13"],
|
38
|
+
["[垂仁]1", "@A", "name=[垂仁];-028-01-02"],
|
39
|
+
["[景行]1", "@A", "name=[景行];0071-07-11"],
|
40
|
+
["[成務]1", "@A", "name=[成務];0131-01-05"],
|
41
|
+
["[仲哀]1", "@A", "name=[仲哀];0192-01-11"],
|
42
|
+
["[神功皇后]0","@A","name=[神功皇后];0200-02-07"],
|
43
|
+
["[応神]1", "@A", "name=[応神];0270-01-01"],
|
44
|
+
["[仁徳]1", "@A", "name=[仁徳];0313-01-03"],
|
45
|
+
["[履中]1", "@A", "name=[履中];0400-02-01"],
|
46
|
+
["[反正]1", "@A", "name=[反正];0406-01-02"],
|
47
|
+
["[允恭]1", "@A", "name=[允恭];0412-12"],
|
48
|
+
["[安康]0", "@A", "name=[安康];0453-12-14^ChineseTwin::元嘉暦"],
|
49
|
+
["[雄略]0", "@A", "name=[雄略];0456-11-13"],
|
50
|
+
["[清寧]1", "@A", "name=[清寧];0480-01-15"],
|
51
|
+
["[顕宗]1", "@A", "name=[顕宗];0485-01-01"],
|
52
|
+
["[仁賢]1", "@A", "name=[仁賢];0488-01-05"],
|
53
|
+
["[武烈]0", "@A", "name=[武烈];0498-12"],
|
54
|
+
["[継体]1", "@A", "name=[継体];0507-02-04"],
|
55
|
+
["[安閑]1", "@A", "name=[安閑];0534"],
|
56
|
+
["[宣化]0", "@A", "name=[宣化];0535-12"],
|
57
|
+
["[欽明]0", "@A", "name=[欽明];0539-12-05"],
|
58
|
+
["[敏達]1", "@A", "name=[敏達];0572-04-03"],
|
59
|
+
["[用明]0", "@A", "name=[用明];0585-09-05"],
|
60
|
+
["[崇峻]0", "@A", "name=[崇峻];0587-08-02"],
|
61
|
+
["[推古]0", "@A", "name=[推古];0592-12-08"],
|
62
|
+
["[舒明]1", "@A", "name=[舒明];0629-01-04"],
|
63
|
+
["[皇極]1", "@A", "name=[皇極];0642-01-15"],
|
64
|
+
["[大化]1", "@A", "name=[孝徳];0645-06-19"],
|
65
|
+
["[白雉]1", "@FE", " 0650-02-15"],
|
66
|
+
["[斉明]1", "@A", "name=[斉明];0655-01-03"],
|
67
|
+
["[天智]1", "@A", "name=[天智];0662-01-01"],
|
68
|
+
["[天武]1", "@A", "name=[天武];0672-01-01"],
|
69
|
+
["[朱鳥]1", "", " 0686-07-20", "0687-01-01"]
|
70
|
+
]]
|
71
|
+
end
|
@@ -1,1386 +1,1383 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
=begin
|
3
|
-
Copyright (C) 2012-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
|
-
require 'when_exe/ephemeris/notes'
|
9
|
-
require 'when_exe/region/japanese/residues'
|
10
|
-
|
11
|
-
class When::CalendarNote
|
12
|
-
|
13
|
-
#
|
14
|
-
# 日本暦注
|
15
|
-
#
|
16
|
-
class Japanese < self
|
17
|
-
|
18
|
-
#
|
19
|
-
# 日本暦注が使用する暦法
|
20
|
-
#
|
21
|
-
# @private
|
22
|
-
class Cal4Note
|
23
|
-
def initialize(calendar, solar)
|
24
|
-
@calendar = calendar
|
25
|
-
@solar = solar
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
#
|
30
|
-
# 日本暦注の要素
|
31
|
-
#
|
32
|
-
# @private
|
33
|
-
class Note < When::CalendarNote::NoteElement
|
34
|
-
end
|
35
|
-
|
36
|
-
#
|
37
|
-
# 日本暦注の要素
|
38
|
-
#
|
39
|
-
Notes = [When::BasicTypes::M17n, [
|
40
|
-
"locale:[=ja:, en=en:]",
|
41
|
-
"names:[日本暦注]",
|
42
|
-
|
43
|
-
# 年の暦注 ----------------------------
|
44
|
-
[When::BasicTypes::M17n,
|
45
|
-
"names:[年]",
|
46
|
-
[Note, 0xFFFF, "label:[干支]", 'position:共通'], # 0: 干支
|
47
|
-
# [Note, 0xFFFF, "label:[干=ja:%%<十干>]",
|
48
|
-
# 'position:共通'], # 干
|
49
|
-
# [Note, 0xFFFF, "label:[支=ja:%%<十二支>]",
|
50
|
-
# 'position:共通'], # 支
|
51
|
-
[Note, 0x3800, "label:[廿八宿=ja:%%<二十八宿>]",
|
52
|
-
'position:共通'], # 1: 廿八宿
|
53
|
-
[Note, 0x3FFC, "label:[大歳壇=]", 'position:暦序'], # 2: 干支
|
54
|
-
[Note, 0xC000, "label:[九星]", 'position:民間'], # 3: 九星
|
55
|
-
[Note, 0xFFFC, "label:[納音]", 'position:暦序', 'suffix:是'], # 4: 干支
|
56
|
-
[Note, 0xFFFF, "label:[大歳=ja:%%<太歳神>]",
|
57
|
-
'position:暦序', 'suffix:在'], # 5: 干支
|
58
|
-
[Note, 0xFFFF, "label:[大將軍=ja:%%<大将軍_(方位神)>]",
|
59
|
-
'position:暦序', 'suffix:在'], # 6: 支
|
60
|
-
[Note, 0xFFFF, "label:[大陰=ja:%%<太陰神>]",
|
61
|
-
'position:暦序', 'suffix:在'], # 7: 支
|
62
|
-
[Note, 0xFFFF, "label:[歳徳=ja:%%<歳徳神>]",
|
63
|
-
'position:暦序', 'suffix:在'], # 8: 干
|
64
|
-
[Note, 0xFFFF, "label:[歳刑=ja:%%<歳刑神>]",
|
65
|
-
'position:暦序', 'suffix:在'], # 9: 支
|
66
|
-
[Note, 0xFFFF, "label:[歳破=ja:%%<歳破神>]",
|
67
|
-
'position:暦序', 'suffix:在'], # 10: 支
|
68
|
-
[Note, 0xFFFF, "label:[歳煞=ja:%%<歳煞神>]",
|
69
|
-
'position:暦序', 'suffix:在'], # 11: 支
|
70
|
-
[Note, 0xFFFF, "label:[黄幡=ja:%%<黄幡神>]",
|
71
|
-
'position:暦序', 'suffix:在'], # 12: 支
|
72
|
-
[Note, 0xFFFF, "label:[豹尾=ja:%%<豹尾神>]",
|
73
|
-
'position:暦序', 'suffix:在'], # 13: 支
|
74
|
-
[Note, 0x0003, "label:[天道=]", 'position:暦序', 'suffix:-'], # 14: 支
|
75
|
-
[Note, 0x0003, "label:[人道=]", 'position:暦序', 'suffix:-'], # 15: 支
|
76
|
-
[Note, 0x3FFC, "label:[歳次=]", 'position:暦序', 'suffix:-'], # 16: 支
|
77
|
-
[Note, 0xF800, "label:[金神]", 'position:仮名暦', 'suffix:在'], # 17: 干
|
78
|
-
[Note, 0xFFFF, "label:[大小]", 'position:暦序'] # 18: 朔閏表
|
79
|
-
],
|
80
|
-
|
81
|
-
# 月の暦注 ----------------------------
|
82
|
-
[When::BasicTypes::M17n,
|
83
|
-
"names:[月]",
|
84
|
-
[Note, 0xFFFF, "label:[月名=ja:%%<月_(暦)>#%.<日本の和風月名>, Month]",
|
85
|
-
'position:月建'], # 0: 月の和名
|
86
|
-
# [Note, 0xFFFF, "label:[干支]", 'position:共通'], # 干支
|
87
|
-
# [Note, 0xFFFF, "label:[干=ja:%%<十干>]",
|
88
|
-
# 'position:共通'], # 干
|
89
|
-
# [Note, 0xFFFF, "label:[支=ja:%%<十二支>]",
|
90
|
-
# 'position:共通'], # 支
|
91
|
-
[Note, 0xF800, "label:[廿八宿=ja:%%<二十八宿>]",
|
92
|
-
'position:共通'], # 1: 廿八宿
|
93
|
-
[Note, 0xFFFC, "label:[月建=]", 'position:月建', 'suffix:-' ], # 2: 年の十干と暦月
|
94
|
-
[Note, 0xC000, "label:[九星]", 'position:民間'], # 3: 九星
|
95
|
-
[Note, 0x0003, "label:[天氣=]", 'position:月建', 'suffix:-' ], # 4: 暦月
|
96
|
-
[Note, 0x3FFF, "label:[天道=]", 'position:月建', 'suffix:-' ], # 5: 暦月
|
97
|
-
[Note, 0x0003, "label:[人道=]", 'position:月建', 'suffix:-' ], # 6: 暦月
|
98
|
-
[Note, 0x0003, "label:[月破=]", 'position:月建', 'suffix:在'], # 7: 暦月
|
99
|
-
[Note, 0x3FFC, "label:[天徳=]", 'position:月建', 'suffix:在'], # 8: 暦月
|
100
|
-
[Note, 0x3FFF, "label:[月煞=]", 'position:月建', 'suffix:在'], # 9: 暦月
|
101
|
-
[Note, 0x3FFF, "label:[用時=]", 'position:月建', 'suffix:-' ], # 10: 暦月
|
102
|
-
[Note, 0x3FFF, "label:[月徳=]", 'position:月建', 'suffix:在'], # 11: 暦月
|
103
|
-
[Note, 0x3FFC, "label:[月徳合=]", 'position:月建', 'suffix:在'], # 12: 暦月
|
104
|
-
[Note, 0x3FFC, "label:[月空=]", 'position:月建', 'suffix:在'], # 13: 暦月
|
105
|
-
[Note, 0x3FFF, "label:[三鏡=]", 'position:月建', 'suffix:-' ], # 14: 暦月
|
106
|
-
[Note, 0x3FFF, "label:[土府=]", 'position:月建', 'suffix:在'], # 15: 暦月
|
107
|
-
[Note, 0x3FFC, "label:[土公=ja:%%<土公神>]",
|
108
|
-
'position:月建', 'suffix:在'], # 16: 暦月
|
109
|
-
[Note, 0xFFFF, "label:[大小]", 'position:月建'] # 17: 朔閏表
|
110
|
-
],
|
111
|
-
|
112
|
-
# 日の暦注 ----------------------------
|
113
|
-
[When::BasicTypes::M17n,
|
114
|
-
"names:[日]",
|
115
|
-
[Note, 0xFFFF, "label:[干支]", 'position:共通'], # 0: 干支
|
116
|
-
# [Note, 0x, "label:[干=ja:%%<十干>]",
|
117
|
-
# 'position:共通'], # 干
|
118
|
-
# [Note, 0x, "label:[支=ja:%%<十二支>]",
|
119
|
-
# 'position:共通'], # 支
|
120
|
-
[Note, 0x3FFF, "label:[納音]", 'position:共通', 'suffix:是'], # 1: 干支
|
121
|
-
[Note, 0xFFFF, "label:[十二直]", 'position:共通'], # 2: 支 節月
|
122
|
-
[Note, 0xFFFF, "label:[七曜]", 'position:共通'], # 3: 七曜
|
123
|
-
[Note, 0xF800, "label:[廿八宿=ja:%%<二十八宿>]",
|
124
|
-
'position:共通'], # 4: 廿八宿
|
125
|
-
[Note, 0x07F8, "label:[廿七宿=ja:%%<二十八宿>]",
|
126
|
-
'position:共通'], # 5: 暦月 暦日
|
127
|
-
[Note, 0xC000, "label:[九星]", 'position:民間'], # 6: 九星
|
128
|
-
[Note, 0x8000, "label:[六曜]", 'position:民間'], # 7: 暦月 暦日
|
129
|
-
[Note, 0xE000, "label:[祝祭日]", 'position:祝祭日'], # 8: 暦月 暦日 (七曜)
|
130
|
-
[Note, 0xFFFF, "label:[廿四節気=ja:%%<二十四節気>]",
|
131
|
-
'position:時候'], # 9: 太陽黄経
|
132
|
-
[Note, 0xFFFF, "label:[節中=]", 'position:時候'], # 10: 太陽黄経
|
133
|
-
[Note, 0xFFFC, "label:[七十二候]", 'position:時候'], # 11: 太陽黄経
|
134
|
-
[Note, 0x3FFC, "label:[六十卦=]", 'position:時候'], # 12: 太陽黄経
|
135
|
-
[Note, 0xF800, "label:[節分]", 'position:雑節'], # 13: 立春からの日数
|
136
|
-
[Note, 0xF800, "label:[初午]", 'position:雑節'], # 14: 支 節月 or 暦月
|
137
|
-
[Note, 0xF800, "label:[八十八夜]", 'position:雑節'], # 15: 立春からの日数
|
138
|
-
[Note, 0xF800, "label:[入梅]", 'position:雑節'], # 16: 干 太陽黄経
|
139
|
-
[Note, 0xF800, "label:[半夏生]", 'position:雑節'], # 17: 干 太陽黄経
|
140
|
-
[Note, 0xF800, "label:[二百十日]", 'position:雑節'], # 18: 立春からの日数
|
141
|
-
[Note, 0xF800, "label:[二百廿日]", 'position:雑節'], # 19: 立春からの日数
|
142
|
-
|
143
|
-
[Note, 0x3FFC, "label:[大禍=ja:%%<暦注下段>#%.<大禍日>]",
|
144
|
-
'position:上段 上段 欄外 欄外', 'suffix:日'], # 20: 支 節月
|
145
|
-
[Note, 0x3FFC, "label:[滅門=ja:%%<暦注下段>#%.<滅門日>]",
|
146
|
-
'position:上段 上段 欄外 欄外', 'suffix:日'], # 21: 支 節月
|
147
|
-
[Note, 0x3FFC, "label:[狼藉=ja:%%<暦注下段>#%.<狼藉日>]",
|
148
|
-
'position:上段 上段 欄外 欄外', 'suffix:日'], # 22: 支 節月
|
149
|
-
|
150
|
-
[Note, 0x07F8, "label:[甘露=]", 'position:上段 上段 上段 上段', 'suffix:日'], # 23: 七曜 廿七宿
|
151
|
-
[Note, 0x07F8, "label:[金剛峯=]", 'position:上段 上段 上段 上段'], # 24: 七曜 廿七宿
|
152
|
-
[Note, 0x07F8, "label:[羅刹=]", 'position:上段 上段 上段 上段'], # 25: 七曜 廿七宿
|
153
|
-
|
154
|
-
[Note, 0x3FFC, "label:[大將軍=ja:%%<大将軍_(方位神)>]",
|
155
|
-
'position:上段 上段 上段 上段', 'suffix:-'], # 26: 干支 節年
|
156
|
-
[Note, 0xFFFC, "label:[天一=ja:%%<天一神>]",
|
157
|
-
'position:上段 上段 上段 上段', 'suffix:-'], # 27: 干支
|
158
|
-
[Note, 0x3FFC, "label:[土公=ja:%%<土公神>]",
|
159
|
-
'position:上段 上段 上段 上段', 'suffix:-'], # 28: 干支
|
160
|
-
[Note, 0x3FFC, "label:[歳下食=ja:%%<暦注下段>#%.<歳下食>]",
|
161
|
-
'position:上段 上段 上段 上段'], # 29: 干支 節年
|
162
|
-
[Note, 0x3FFC, "label:[忌遠行=]", 'position:上段 上段 上段 上段'], # 30: 支 節月
|
163
|
-
[Note, 0x3FFC, "label:[忌夜行=]", 'position:上段 上段 上段 上段'], # 31: 支 節月
|
164
|
-
[Note, 0x3FFC, "label:[下食時=ja:%%<暦注下段>#%.<時下食>]",
|
165
|
-
'position:上段 上段 上段 上段', 'suffix:-'], # 32: 支 節月 貞享暦で一部廃止
|
166
|
-
[Note, 0x3FFC, "label:[天間=]", 'position:上段 上段 上段 中段上'], # 33: 干支 節月
|
167
|
-
[Note, 0x3FFC, "label:[不視病=]", 'position:上段 上段 上段 上段'], # 34: 干
|
168
|
-
[Note, 0x3FFC, "label:[不問疾=]", 'position:上段 上段 上段 上段'], # 35: 干
|
169
|
-
[Note, 0x3FFC, "label:[不弔人=]", 'position:上段 上段 上段 上段'], # 36: 支
|
170
|
-
[Note, 0xFFFC, "label:[彼岸]", 'position:仮名暦'], # 37: 太陽黄経
|
171
|
-
[Note, 0xFFFF, "label:[社=ja:%%<社日>]",
|
172
|
-
'position:中段 中段 中段 中段', 'suffix:日'], # 38: 干 太陽黄経
|
173
|
-
[Note, 0xFFFF, "label:[三伏]", 'position:中段 中段 中段 中段'], # 39: 干 太陽黄経
|
174
|
-
[Note, 0x3FFC, "label:[除手足甲=]", 'position:中段 中段 中段 中段'], # 40: 晦(除手足甲)、支(片方のみ), 没滅凶会日×
|
175
|
-
[Note, 0x3FFC, "label:[沐浴=]", 'position:中段 中段 中段 中段'], # 41: 支 没滅凶会日×
|
176
|
-
[Note, 0x3FFD, "label:[臘=ja:%%<臘日>]",
|
177
|
-
'position:中段 中段 中段 中段', 'suffix:日'], # 42: 支 太陽黄経
|
178
|
-
[Note, 0x3FFC, "label:[伐=]", 'position:中段 中段 中段 中段上', 'suffix:日'], # 43: 干支
|
179
|
-
[Note, 0x3FFC, "label:[五墓=ja:%%<暦注下段>#%.<五墓日>]",
|
180
|
-
'position:中段 中段 中段 中段下', 'suffix:日'], # 44: 干支
|
181
|
-
[Note, 0x3FFC, "label:[六蛇=]", 'position:中段 中段 中段 中段上'], # 45: 干支 節月
|
182
|
-
[Note, 0x3FFC, "label:[七鳥=]", 'position:中段 中段 中段 中段上'], # 46: 干支 節月
|
183
|
-
[Note, 0x3FFC, "label:[八龍=]", 'position:中段 中段 中段 中段上'], # 47: 干支 節月
|
184
|
-
[Note, 0x3FFC, "label:[九虎=]", 'position:中段 中段 中段 中段上'], # 48: 干支 節月
|
185
|
-
[Note, 0x07FF, "label:[没=ja:%%<没日>]",
|
186
|
-
'position:中段 中段 中段 中段', 'suffix:日'], # 49: 太陽黄経
|
187
|
-
[Note, 0xFFF8, "label:[日食]", 'position:中段 中段 中段 中段'], # 50: 日食表
|
188
|
-
[Note, 0x07FC, "label:[滅=ja:%%<滅日]",
|
189
|
-
'position:中段 中段 中段 中段', 'suffix:日'], # 51: 月の位相
|
190
|
-
[Note, 0xFFF8, "label:[月食]", 'position:中段 中段 中段 中段'], # 52: 月食表
|
191
|
-
[Note, 0xC7FD, "label:[月相]", 'position:中段 中段 中段 中段'], # 53: 月の位相
|
192
|
-
[Note, 0xFFFF, "label:[土用事=ja:%%<土用>]",
|
193
|
-
'position:中段 中段 中段 中段'], # 54: 太陽黄経
|
194
|
-
[Note, 0x3FF0, "label:[伏龍=]", 'position:上段 上段 下段 下段', 'suffix:在'], # 55: 太陽黄経
|
195
|
-
|
196
|
-
[Note, 0x3FFF, "label:[凶会=ja:%%<暦注下段>#%.<凶会日>]",
|
197
|
-
'position:下段 下段 下段 下段', 'suffix:日'], # 56: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
|
198
|
-
[Note, 0x3FFF, "label:[大小歳=]", 'position:下段 下段 下段 下段'], # 57: 干支 節月
|
199
|
-
[Note, 0x3FFC, "label:[歳徳=ja:%%<歳徳神>]",
|
200
|
-
'position:下段 下段 下段 下段'], # 58: 干 節年 凶会日× ~合も
|
201
|
-
[Note, 0x0003, "label:[天倉=]", 'position:古注'], # 59: 干支 節月
|
202
|
-
# [Note, 0x0003, "label:[天李=]", 'position:古注'], # 干支 節月?
|
203
|
-
[Note, 0x37FF, "label:[天恩=ja:%%<暦注下段>#%.<天恩日>]",
|
204
|
-
'position:下段 下段 下段 下段', 'suffix:日'], # 60: 干支 節月 凶会日×
|
205
|
-
[Note, 0xFFFF, "label:[天赦=ja:%%<暦注下段>#%.<天赦日>]",
|
206
|
-
'position:下段 下段 下段 下段'], # 61: 干支 節月
|
207
|
-
[Note, 0x37FF, "label:[母倉=ja:%%<暦注下段>#%.<母倉日>]",
|
208
|
-
'position:下段 下段 下段 下段', 'suffix:日'], # 62: 支 節月 凶会日×
|
209
|
-
[Note, 0x37FC, "label:[月徳=]", 'position:下段 下段 下段 下段'], # 63: 干 節月 凶会日× ~合も
|
210
|
-
[Note, 0x3FFF, "label:[九坎=]", 'position:下段 下段 下段 下段'], # 64: 支 節月
|
211
|
-
[Note, 0x3FFF, "label:[歸忌=ja:%%<暦注下段>#%.<帰忌日>]",
|
212
|
-
'position:下段 下段 下段 下段', 'suffix:日'], # 65: 支 節月
|
213
|
-
[Note, 0x3FFF, "label:[血忌=ja:%%<暦注下段>#%.<血忌日>]",
|
214
|
-
'position:下段 下段 下段 下段', 'suffix:日'], # 66: 支 節月
|
215
|
-
[Note, 0x3FFC, "label:[無翹=]", 'position:下段 下段 下段 下段'], # 67: 支 節月
|
216
|
-
[Note, 0x3FFF, "label:[厭=]", 'position:下段 下段 下段 下段'], # 68: 支 節月
|
217
|
-
[Note, 0x3FFC, "label:[重=ja:%%<暦注下段>#%.<重日>]",
|
218
|
-
'position:下段 下段 下段 下段', 'suffix:日'], # 69: 支
|
219
|
-
[Note, 0x3FFD, "label:[復=ja:%%<暦注下段>#%.<復日>]",
|
220
|
-
'position:下段 下段 下段 下段', 'suffix:日'], # 70: 干 節月
|
221
|
-
[Note, 0x3FFC, "label:[月煞=]", 'position:下段 下段 下段 下段'], # 71: 支 節月
|
222
|
-
[Note, 0x3FFF, "label:[往亡=ja:%%<暦注下段>#%.<往亡日>]",
|
223
|
-
'position:下段 下段 下段 下段', 'suffix:日'], # 72: 太陽黄経
|
224
|
-
[Note, 0x3FFF, "label:[日遊=ja:%%<日遊神>]",
|
225
|
-
'position:最下段', 'suffix:在'], # 73: 干支
|
226
|
-
[Note, 0x07FF, "label:[人神配当=]", 'position:最下段孟月', 'suffix:-'], # 74: 暦日
|
227
|
-
|
228
|
-
[Note, 0x3E00, "label:[受死=ja:%%<暦注下段>#%.<受死日>]",
|
229
|
-
'position:仮名暦', 'suffix:日'], # 75: 支 節月
|
230
|
-
[Note, 0xFFF0, "label:[八專]", 'position:仮名暦'], # 76: 干支
|
231
|
-
[Note, 0x3E00, "label:[八專間日=ja:%%<八専>]",
|
232
|
-
'position:仮名暦'], # 77: 干支
|
233
|
-
[Note, 0xC000, "label:[金神間日=ja:%%<金神>#%.<金神の遊行・間日>]",
|
234
|
-
'position:仮名暦'], # 78: 支 節月
|
235
|
-
[Note, 0xC000, "label:[金神遊行=ja:%%<金神>#%.<金神の遊行・間日>]",
|
236
|
-
'position:仮名暦'], # 79: 支 節月
|
237
|
-
[Note, 0x3FF0, "label:[天火=ja:%%<暦注下段>#%.<天火日>]",
|
238
|
-
'position:仮名暦', 'suffix:日'], # 80: 支 節月
|
239
|
-
[Note, 0x3FF0, "label:[地火=ja:%%<暦注下段>#%.<地火日>]",
|
240
|
-
'position:仮名暦', 'suffix:日'], # 81: 支 節月
|
241
|
-
[Note, 0x3800, "label:[人火=]", 'position:仮名暦'], # 82: 支 節月
|
242
|
-
[Note, 0x3800, "label:[雷火=]", 'position:仮名暦'], # 83: 支 節月
|
243
|
-
[Note, 0x3FF0, "label:[赤舌=ja:%%<赤舌日>]",
|
244
|
-
'position:仮名暦', 'suffix:日'], # 84: 暦月 暦日
|
245
|
-
[Note, 0x3E00, "label:[十死=ja:%%<暦注下段>#%.<十死日>]",
|
246
|
-
'position:仮名暦', 'suffix:日'], # 85: 支 節月
|
247
|
-
[Note, 0x3E00, "label:[道虚=]", 'position:仮名暦', 'suffix:日'], # 86: 暦日
|
248
|
-
[Note, 0x3E00, "label:[大明=ja:%%<暦注下段>#%.<大明日>]",
|
249
|
-
'position:仮名暦', 'suffix:日'], # 87: 干支
|
250
|
-
[Note, 0x0600, "label:[大赤=ja:%%<赤口日>]",
|
251
|
-
'position:仮名暦', 'suffix:日'], # 88: 暦月 暦日
|
252
|
-
[Note, 0xF800, "label:[甲子待=ja:%%<甲子>]",
|
253
|
-
'position:仮名暦'], # 89: 干支
|
254
|
-
[Note, 0xC000, "label:[己巳]", 'position:仮名暦'], # 90: 干支
|
255
|
-
[Note, 0xF800, "label:[庚申待]", 'position:仮名暦'], # 91: 干支
|
256
|
-
[Note, 0x3800, "label:[犯土]", 'position:仮名暦'], # 92: 干支
|
257
|
-
[Note, 0xF800, "label:[十方暮]", 'position:仮名暦'], # 93: 干支
|
258
|
-
[Note, 0xF800, "label:[一粒万倍=ja:%%<一粒万倍日>]",
|
259
|
-
'position:仮名暦', 'suffix:日'], # 94: 支 節月
|
260
|
-
[Note, 0x3800, "label:[天福=]", 'position:仮名暦'], # 95: 支 節月
|
261
|
-
[Note, 0x3800, "label:[地福=]", 'position:仮名暦'], # 96: 支 節月
|
262
|
-
[Note, 0x3800, "label:[地五福=]", 'position:仮名暦'], # 97: 支 節月
|
263
|
-
[Note, 0xB800, "label:[三隣亡]", 'position:仮名暦'], # 98: 支 節月
|
264
|
-
[Note, 0xF800, "label:[不成就=ja:%%<不成就日>]",
|
265
|
-
'position:仮名暦', 'suffix:日'], # 99: 暦月 暦日/晦日
|
266
|
-
[Note, 0x3800, "label:[鬼宿]", 'position:仮名暦'], #100: 廿八宿
|
267
|
-
[Note, 0x3800, "label:[金性=]", 'position:仮名暦'], #101: 支 節月 支 節年
|
268
|
-
[Note, 0x3FFF, "label:[三寶吉=ja:%%<三宝吉>]",
|
269
|
-
'position:上段 上段 上段 上段'], #102: 干支 節月
|
270
|
-
[Note, 0x3FFF, "label:[神吉=ja:%%<暦注下段>#%.<神日>]",
|
271
|
-
'position:上段 上段 中段 中段上', 'suffix:日'], #103: 干支 節月
|
272
|
-
[Note, 0x3FFF, "label:[雑事吉=]", 'position:雑事吉'], #104: 干支 節月
|
273
|
-
[Note, 0x3FFF, "label:[小字注=]", 'position:下段小字 下段小字 下段小字 下段小字'],#105: 干支 節月
|
274
|
-
]
|
275
|
-
]]
|
276
|
-
|
277
|
-
#
|
278
|
-
# 日本暦注の時代変遷
|
279
|
-
#
|
280
|
-
# @private
|
281
|
-
NoteTypes = (2...When::TM::CalendarEra::JapaneseSolar[1].size).to_a.map {|i|
|
282
|
-
calendars =
|
283
|
-
[When::TM::CalendarEra::JapaneseLuniSolar[1][i][2],
|
284
|
-
When::TM::CalendarEra::JapaneseSolar[1][i][2]].map {|epoch|
|
285
|
-
epoch =~
|
286
|
-
$4
|
287
|
-
}
|
288
|
-
[$2 == '01' ? $1.to_i : $1.to_i+1, Cal4Note.new(*calendars)]
|
289
|
-
}.reverse
|
290
|
-
|
291
|
-
# @private
|
292
|
-
NoteRange = [
|
293
|
-
# 開始 具注暦 七十二候 index mask
|
294
|
-
[-660, 0, 0], # ~ 696 0 : 0001
|
295
|
-
[ 697, 0, 0], # ~ 763 1 : 0002
|
296
|
-
[ 764, 0, 2], # ~ 800 2 : 0004
|
297
|
-
[ 801, 0, 2], # ~ 900 3 : 0008
|
298
|
-
[ 901, 0, 2], # ~1003 4 : 0010
|
299
|
-
[1004, 1, 2], # ~1047 5 : 0020
|
300
|
-
[1048, 1, 2], # ~1100 6 : 0040
|
301
|
-
[1101, 1, 2], # ~1184 7 : 0080
|
302
|
-
[1185, 2, 2], # ~1300 8 : 0100
|
303
|
-
[1301, 2, 2], # ~1337 9 : 0200
|
304
|
-
[1338, 3, 2], # ~1684 10 : 0400
|
305
|
-
[1685, 3, 3], # ~1754 11 : 0800
|
306
|
-
[1755, 3, 4], # ~1867 12 : 1000
|
307
|
-
[1868, 3, 4], # ~1872 13 : 2000
|
308
|
-
[1873, 3, 4], # ~1873 14 : 4000
|
309
|
-
[1874, 3, 5] # ~ 15 : 8000
|
310
|
-
]
|
311
|
-
|
312
|
-
# @private
|
313
|
-
NoteFocused = (0...NoteRange.size).to_a.map {|range|
|
314
|
-
(2..4).to_a.map {|cord|
|
315
|
-
notes = Notes[1][cord]
|
316
|
-
(2...notes.size).to_a.inject([]) {|focused,note|
|
317
|
-
focused << notes[note][2][/\[.+?[=\]]/][1..-2] if notes[note][1][range] == 1
|
318
|
-
focused
|
319
|
-
}
|
320
|
-
}
|
321
|
-
}
|
322
|
-
|
323
|
-
#
|
324
|
-
# 月の大小
|
325
|
-
#
|
326
|
-
# @private
|
327
|
-
MonthPattern = {
|
328
|
-
29 => '小',
|
329
|
-
30 => '大',
|
330
|
-
-28 => '平',
|
331
|
-
-29 => '閏',
|
332
|
-
-30 => '小',
|
333
|
-
-31 => '大'
|
334
|
-
}
|
335
|
-
|
336
|
-
#
|
337
|
-
# 日本暦注に対応するインデックス(整数値)
|
338
|
-
#
|
339
|
-
# @private
|
340
|
-
module Index
|
341
|
-
# @private
|
342
|
-
[[2,'Y'], [3,'M'], [4,'D']].map {|cord|
|
343
|
-
index, initial = cord
|
344
|
-
notes = Notes[1][index]
|
345
|
-
(notes.size-2).times {|no|
|
346
|
-
name = initial + notes[no+2][2][/\[.+?[=\]]/][1..-2]
|
347
|
-
mask = 'M' + name
|
348
|
-
const_set(name, no)
|
349
|
-
const_set(mask, 1<<no)
|
350
|
-
}
|
351
|
-
}
|
352
|
-
end
|
353
|
-
|
354
|
-
#
|
355
|
-
# 日本暦注が使用する暦法
|
356
|
-
#
|
357
|
-
# @private
|
358
|
-
class Cal4Note
|
359
|
-
attr_reader :calendar, :solar
|
360
|
-
|
361
|
-
def l_calendar
|
362
|
-
@l_calendar ||= When.Calendar(@calendar)
|
363
|
-
end
|
364
|
-
|
365
|
-
def s_calendar
|
366
|
-
@s_calendar ||= When.Calendar(@solar)
|
367
|
-
end
|
368
|
-
|
369
|
-
def l_phases
|
370
|
-
@l_phases ||= Japanese::LunarPhases.new('formula'=>l_calendar.formula[-1])
|
371
|
-
end
|
372
|
-
|
373
|
-
def s_terms
|
374
|
-
@s_terms ||= Japanese::SolarTerms.new('formula'=>s_calendar.formula[0])
|
375
|
-
end
|
376
|
-
|
377
|
-
def doyo
|
378
|
-
s_calendar.doyo
|
379
|
-
end
|
380
|
-
end
|
381
|
-
|
382
|
-
#
|
383
|
-
# 日本暦注用の Notes の要素のための内部クラス
|
384
|
-
#
|
385
|
-
# @private
|
386
|
-
class Note
|
387
|
-
|
388
|
-
attr_reader :label, :position, :suffix
|
389
|
-
|
390
|
-
def to_note_hash(note, dates=nil)
|
391
|
-
{
|
392
|
-
:note => self,
|
393
|
-
:value => case @suffix
|
394
|
-
when '是' ; [@label + '是-', note[
|
395
|
-
when '在' ; [@label + '在-', note]
|
396
|
-
when '-' ; [@label + '-', note]
|
397
|
-
else ; note
|
398
|
-
end,
|
399
|
-
:position => @position[@position.size == 1 ? 0 : dates.index_g]
|
400
|
-
}
|
401
|
-
end
|
402
|
-
|
403
|
-
private
|
404
|
-
# オブジェクトの正規化
|
405
|
-
#
|
406
|
-
def _normalize(args=[], options={})
|
407
|
-
@position = @position.split(/ /)
|
408
|
-
end
|
409
|
-
end
|
410
|
-
|
411
|
-
#
|
412
|
-
# 日本暦注計算に必要となる暦日や暦法をまとめた内部クラス
|
413
|
-
#
|
414
|
-
# @private
|
415
|
-
class Dates
|
416
|
-
|
417
|
-
attr_reader :year, :precision, :cal4note, :range, :index_g, :index_s, :o_date, :l_date, :m_date, :s_date
|
418
|
-
|
419
|
-
# 初期設定
|
420
|
-
def initialize(date, year=date.most_significant_coordinate, precision=date.precision, cal4note=nil)
|
421
|
-
|
422
|
-
# 暦注パターン
|
423
|
-
if cal4note
|
424
|
-
# 年代による判定
|
425
|
-
(1...NoteRange.size).to_a.reverse.each do |i|
|
426
|
-
if year >= NoteRange[i][0]
|
427
|
-
@range = i
|
428
|
-
break
|
429
|
-
end
|
430
|
-
end
|
431
|
-
@range ||= 0
|
432
|
-
else
|
433
|
-
# 暦法による判定
|
434
|
-
cal4note = Cal4Note.new(date.frame, date.frame.twin)
|
435
|
-
@range =
|
436
|
-
case cal4note.l_calendar.formula[-1]
|
437
|
-
when When::Ephemeris::ChineseTrueLunation::JujiMethods ; 11 # 江戸時代の暦
|
438
|
-
when When::Ephemeris::ChineseTrueLunation
|
439
|
-
date.frame.twin =~ /戊寅|麟徳/ ? 1 : 10 # 唐代定朔暦(儀鳳暦 or 宣明暦)
|
440
|
-
when When::Ephemeris::MeanLunation ; 0 # 唐代以前平朔暦(元嘉暦)
|
441
|
-
else ; 15 # 現代の旧暦
|
442
|
-
end
|
443
|
-
end
|
444
|
-
|
445
|
-
# 具注暦の配置
|
446
|
-
@index_g = NoteRange[@range][1]
|
447
|
-
|
448
|
-
# 七十二候
|
449
|
-
@index_s = NoteRange[@range][2]
|
450
|
-
|
451
|
-
# その他の属性
|
452
|
-
@year = year
|
453
|
-
@precision = precision
|
454
|
-
@cal4note = cal4note
|
455
|
-
@o_date = date
|
456
|
-
@l_date = @cal4note.l_calendar ^ date
|
457
|
-
@m_date = date.frame.kind_of?(When::CalendarTypes::Christian) ? @l_date : @o_date
|
458
|
-
@s_date = @cal4note.s_calendar ^ date
|
459
|
-
end
|
460
|
-
end
|
461
|
-
|
462
|
-
NoteMethods = [:year_notes, :month_notes, :day_notes]
|
463
|
-
|
464
|
-
# 暦注の計算
|
465
|
-
#
|
466
|
-
# @param [When::TM::TemporalPosition] date 暦注を計算する日時
|
467
|
-
# (date が When::TM::TemporalPosition でない場合、When::TM::TemporalPosition に変換して使用する)
|
468
|
-
# @param [Hash] options
|
469
|
-
# :indices, :notes およびその他のキー => {When::CalendarNote#notes} を参照
|
470
|
-
#
|
471
|
-
# @return [Hash] :notes が String の場合
|
472
|
-
# @return [Array<Hash>] 上記に該当せず、:indices が Integer の場合
|
473
|
-
# @return [Array<Array<Hash>>] 上記のいずれにも該当しない場合
|
474
|
-
# @note return 値の [Hash] の要素は下記の通り
|
475
|
-
# :note => 暦注要素 (When::CalendarTypes::Japanese::Note)
|
476
|
-
# :value => 暦注の値 (String or When::BasicTypes::M17n または、その Array)
|
477
|
-
# :position => 具注暦でのその暦注の配置場所(String)
|
478
|
-
#
|
479
|
-
def notes(date, options={})
|
480
|
-
dates, indices, notes, persistence, conditions, options = _parse_note(date, options)
|
481
|
-
NotesContainer.register(indices.map {|i|
|
482
|
-
next [] unless i <= dates.precision
|
483
|
-
send(NoteMethods[i-1], dates, notes[i-1], conditions)
|
484
|
-
}, persistence, date.to_i)
|
485
|
-
end
|
486
|
-
|
487
|
-
# 太陽の位置 => 日時
|
488
|
-
#
|
489
|
-
# @param [When::TM::TemporalPosition] date 探す基準とする日時
|
490
|
-
# @param [Array<Numeric>] parameter 太陽の位置の分子と分母( num, den)
|
491
|
-
#
|
492
|
-
# num 分子 (デフォルト 0 : 基準日時直後の春分)
|
493
|
-
#
|
494
|
-
# den 分母 (デフォルト 360 : 検索範囲の長さ)
|
495
|
-
#
|
496
|
-
# @param [String] parameter 太陽の位置の分子と分母("#{ num }/#{ den }" の形式, デフォルト 0(春分))
|
497
|
-
# @param [Integer] precision 取得したい時間位置の分解能(デフォルト date の分解能)
|
498
|
-
#
|
499
|
-
# @return [When::TM::CalDate] date またはその直後に太陽の位置が指定の値になる日時
|
500
|
-
#
|
501
|
-
def term(date, parameter=nil, precision=date.precision)
|
502
|
-
dates = _to_date_for_note(date)
|
503
|
-
result = dates.cal4note.s_terms.term(date, parameter)
|
504
|
-
patch = SolarTerms::Patch[result.to_i]
|
505
|
-
return result unless patch
|
506
|
-
num, den = parameter.kind_of?(String) ? parameter.split(
|
507
|
-
num = (num || 0).to_f
|
508
|
-
den = (den || 360).to_f
|
509
|
-
diff = (num - patch[0] + 1) % den - 1
|
510
|
-
return result if diff == 0
|
511
|
-
patched = result + When::P1D * diff
|
512
|
-
result.cal_date[0..-2] = patched.cal_date[0..-2]
|
513
|
-
result.cal_date[-1] = When::Coordinates::Pair.new(patched.cal_date[-1], -diff)
|
514
|
-
result
|
515
|
-
end
|
516
|
-
|
517
|
-
# 月の位相 => 日時
|
518
|
-
#
|
519
|
-
# @param [When::TM::TemporalPosition] date 探す基準とする日時
|
520
|
-
# @param [Array<Numeric>] parameter 月の位相の分子と分母( num, den)
|
521
|
-
#
|
522
|
-
# num 分子 (デフォルト 0 : 基準日時直後の朔)
|
523
|
-
#
|
524
|
-
# den 分母 (デフォルト 30 : 検索範囲の長さ)
|
525
|
-
#
|
526
|
-
# @param [String] parameter 月の位相の分子と分母("#{ num }/#{ den }" の形式, デフォルト 0(朔))
|
527
|
-
# @param [Integer] precision 取得したい時間位置の分解能(デフォルト date の分解能)
|
528
|
-
#
|
529
|
-
# @return [When::TM::CalDate] date またはその直後に月の位相が指定の値になる日時
|
530
|
-
#
|
531
|
-
def phase(date, parameter=nil, precision=date.precision)
|
532
|
-
dates = _to_date_for_note(date)
|
533
|
-
note = dates.cal4note.l_phases
|
534
|
-
result = note.phase(date, parameter)
|
535
|
-
return result if dates.o_date.frame.kind_of?(When::CalendarTypes::Christian)
|
536
|
-
|
537
|
-
time = note.phase(date, parameter, When::SYSTEM)
|
538
|
-
cn = note.formula.time_to_cn(time) % 1
|
539
|
-
case cn
|
540
|
-
when 0..0.0001, 0.9999..1 # 朔
|
541
|
-
return result if result.cal_date[-1] == 1
|
542
|
-
diff = result.cal_date[-1] < 15 ? -1 : +1
|
543
|
-
when 0.2..0.8 # 弦、望
|
544
|
-
return result unless note.formula.kind_of?(When::Ephemeris::ChineseTrueLunation)
|
545
|
-
return result if time.clk_time.universal_time >= When::TM::Duration::DAY/4 # 午前6時以降
|
546
|
-
diff = -1
|
547
|
-
else # その他
|
548
|
-
return result
|
549
|
-
end
|
550
|
-
|
551
|
-
patched = result + When::P1D * diff
|
552
|
-
result.cal_date[0..-2] = patched.cal_date[0..-2]
|
553
|
-
result.cal_date[-1] = When::Coordinates::Pair.new(patched.cal_date[-1], -diff)
|
554
|
-
result
|
555
|
-
end
|
556
|
-
|
557
|
-
private
|
558
|
-
|
559
|
-
# オブジェクトの正規化
|
560
|
-
def _normalize(args=[], options={})
|
561
|
-
@prime ||= [%w(干支), %w(月名), %w(七曜 干支 六曜 廿四節気 祝祭日)]
|
562
|
-
super
|
563
|
-
end
|
564
|
-
|
565
|
-
# 年の暦注
|
566
|
-
def year_notes(dates, notes, conditions={})
|
567
|
-
_note_values(dates, notes, _all_keys[-3], _elements[-3]) do |dates, focused_notes, notes_hash|
|
568
|
-
|
569
|
-
focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-3]
|
570
|
-
root = When.Resource('_co:Common')
|
571
|
-
|
572
|
-
# 干支
|
573
|
-
residue = (dates.precision < When::DAY ? dates.o_date : dates.s_date).most_significant_coordinate - 4
|
574
|
-
notes_hash['干支'] = root['干支'][residue % 60]
|
575
|
-
notes_hash['干'] = root['干' ][residue % 10]
|
576
|
-
notes_hash['支'] = root['支' ][residue % 12]
|
577
|
-
|
578
|
-
# 廿八宿
|
579
|
-
notes_hash['廿八宿'] ||= root['宿'][(residue+18) % 28]
|
580
|
-
|
581
|
-
# 九星
|
582
|
-
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.year(residue)]
|
583
|
-
|
584
|
-
# 大小
|
585
|
-
unless notes_hash['大小']
|
586
|
-
year = dates.o_date.floor(When::YEAR)
|
587
|
-
month = year.floor(When::MONTH)
|
588
|
-
pattern = ''
|
589
|
-
while year == month
|
590
|
-
length = month.length(When::MONTH)
|
591
|
-
length = -length if dates.o_date.frame.kind_of?(When::CalendarTypes::Christian) # 太陽暦
|
592
|
-
pattern += '閏' if month[When::MONTH] * 0 == 1
|
593
|
-
pattern += MonthPattern[length] || '改'
|
594
|
-
month += When::P1M
|
595
|
-
end
|
596
|
-
notes_hash['大小'] = "#{pattern}(#{year.length(When::YEAR)})"
|
597
|
-
end
|
598
|
-
|
599
|
-
# その他
|
600
|
-
[notes_hash['干支'], notes_hash['干'], notes_hash['支']].each do |note|
|
601
|
-
note._year_notes(notes_hash, dates, conditions)
|
602
|
-
end
|
603
|
-
notes_hash
|
604
|
-
end
|
605
|
-
end
|
606
|
-
|
607
|
-
# 月の暦注
|
608
|
-
def month_notes(dates, notes, conditions={})
|
609
|
-
_note_values(dates, notes, _all_keys[-2], _elements[-2]) do |dates, focused_notes, notes_hash|
|
610
|
-
|
611
|
-
focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-2]
|
612
|
-
root = When.Resource('_co:Common')
|
613
|
-
|
614
|
-
# 干支
|
615
|
-
residue = month_stem_branch(dates.precision < When::DAY ? dates.o_date : dates.m_date)
|
616
|
-
notes_hash['干支'] = root['干支'][residue % 60]
|
617
|
-
notes_hash['干'] = root['干' ][residue % 10]
|
618
|
-
notes_hash['支'] = root['支' ][residue % 12]
|
619
|
-
|
620
|
-
# 廿八宿
|
621
|
-
notes_hash['廿八宿'] ||= root['宿'][(residue+6) % 28]
|
622
|
-
|
623
|
-
# 九星
|
624
|
-
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.month(
|
625
|
-
month_stem_branch(dates.precision < When::DAY ? dates.o_date : dates.s_date))]
|
626
|
-
|
627
|
-
# 大小
|
628
|
-
unless notes_hash['大小']
|
629
|
-
length = dates.o_date.length(When::MONTH)
|
630
|
-
length = -length if dates.o_date.frame.kind_of?(When::CalendarTypes::Christian) # 太陽暦
|
631
|
-
notes_hash['大小'] = "#{dates.o_date[When::MONTH]*0==1 ? '閏' : ''}#{MonthPattern[length] || '改'}(#{length.abs})"
|
632
|
-
end
|
633
|
-
|
634
|
-
# その他
|
635
|
-
[notes_hash['干支'], notes_hash['干'], notes_hash['支'], JapaneseLuniSolarNote].each do |note|
|
636
|
-
note._month_notes(notes_hash, dates, conditions)
|
637
|
-
end
|
638
|
-
notes_hash
|
639
|
-
end
|
640
|
-
end
|
641
|
-
|
642
|
-
# 日の暦注
|
643
|
-
def day_notes(dates, notes, conditions={})
|
644
|
-
_note_values(dates, notes, _all_keys[-1], _elements[-1]) do |dates, focused_notes, notes_hash|
|
645
|
-
|
646
|
-
focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-1]
|
647
|
-
root = When.Resource('_co:Common')
|
648
|
-
|
649
|
-
# 干支
|
650
|
-
residue = dates.s_date.to_i-11
|
651
|
-
notes_hash['干支'] = root['干支'][residue % 60]
|
652
|
-
notes_hash['干'] = root['干' ][residue % 10]
|
653
|
-
notes_hash['支'] = root['支' ][residue % 12]
|
654
|
-
|
655
|
-
# その他
|
656
|
-
[SolarTerms, LunarPhases, notes_hash['干支'], notes_hash['干'], notes_hash['支'],
|
657
|
-
JapaneseLuniSolarNote, JapaneseSolarNote].each do |note|
|
658
|
-
note._day_notes(notes_hash, dates, conditions)
|
659
|
-
end
|
660
|
-
|
661
|
-
# 七曜
|
662
|
-
notes_hash['七曜'] ||= root['Week'][dates.s_date.to_i % 7]
|
663
|
-
|
664
|
-
# 廿七宿
|
665
|
-
notes_hash['廿七宿'] = _residue27(notes_hash['廿七宿'], root)
|
666
|
-
|
667
|
-
# 廿八宿 / 鬼宿
|
668
|
-
notes_hash['廿八宿'] ||= root['宿'][(dates.s_date.to_i+11) % 28]
|
669
|
-
notes_hash['鬼宿'] ||= /鬼/ =~ notes_hash['廿八宿'].to_s ? '鬼宿' : nil
|
670
|
-
|
671
|
-
# 九星
|
672
|
-
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.day(dates.s_date, dates.cal4note.s_terms)]
|
673
|
-
|
674
|
-
notes_hash
|
675
|
-
end
|
676
|
-
end
|
677
|
-
|
678
|
-
#
|
679
|
-
# 日本暦日情報オブジェクトの生成
|
680
|
-
#
|
681
|
-
# @note 対となる太陽暦のある太陰太陽暦はそのまま(太陰太陽暦,太陽暦)の対
|
682
|
-
# そうでなければ、採用する対を年代により選択する
|
683
|
-
#
|
684
|
-
def _to_date_for_note(date)
|
685
|
-
if date.frame.kind_of?(When::CalendarTypes::ChineseLuniSolar)
|
686
|
-
return Dates.new(date) if date.frame.twin
|
687
|
-
o_date = date
|
688
|
-
else
|
689
|
-
o_date = _to_japanese_date(date)
|
690
|
-
return nil unless o_date
|
691
|
-
end
|
692
|
-
year = o_date.most_significant_coordinate
|
693
|
-
NoteTypes.each do |line|
|
694
|
-
return Dates.new(o_date, year, date.precision, line[1]) if year >= line[0]
|
695
|
-
end
|
696
|
-
nil
|
697
|
-
end
|
698
|
-
|
699
|
-
#
|
700
|
-
# 任意の暦を日本年号付暦日に変換
|
701
|
-
#
|
702
|
-
def _to_japanese_date(date)
|
703
|
-
return date if date._attr[:query] && date._attr[:query]['area'].to_s =~ /日本/
|
704
|
-
(date^ When.era(:area=>'日本')).each do |list|
|
705
|
-
return list[0] if list[0]
|
706
|
-
end
|
707
|
-
nil
|
708
|
-
end
|
709
|
-
|
710
|
-
#
|
711
|
-
# 廿七宿を Resudue 化
|
712
|
-
#
|
713
|
-
def _residue27(index, root)
|
714
|
-
return index unless index.kind_of?(Integer)
|
715
|
-
root['宿'][index]
|
716
|
-
end
|
717
|
-
|
718
|
-
#
|
719
|
-
# 月の干支
|
720
|
-
#
|
721
|
-
def month_stem_branch(date)
|
722
|
-
date.most_significant_coordinate*12+(date.cal_date[1] * 1) +
|
723
|
-
(date.frame.kind_of?(When::CalendarTypes::Christian) ? 12 : 13)
|
724
|
-
end
|
725
|
-
end
|
726
|
-
|
727
|
-
#
|
728
|
-
# 太陽暦の暦注・祝祭日
|
729
|
-
#
|
730
|
-
class JapaneseSolarNote < self
|
731
|
-
|
732
|
-
#
|
733
|
-
# 祝祭日一覧
|
734
|
-
#
|
735
|
-
NotesList = {
|
736
|
-
[ 1, 1] => [[1868..1872, '元旦'], [1874..1948, '四方拝'], [1949..2100, '元日']],
|
737
|
-
[ 1, 3] => [[1874..1948, '元始祭']],
|
738
|
-
[ 1, 5] => [[1874..1948, '新年宴会']],
|
739
|
-
[ 1,-2] => [[2000..2100, '成人の日']],
|
740
|
-
[ 1,15] => [[1868..1872, '小正月'], [1949..1999, '成人の日']],
|
741
|
-
[ 1,29] => [[1873..1873, '神武天皇即位日']],
|
742
|
-
[ 1,30] => [[1874..1912, '孝明天皇祭']],
|
743
|
-
[ 2,11] => [[1874..1948, '紀元節'], [1967..2100, '建国記念の日']],
|
744
|
-
[ 2,24] => [[1989..1989, '昭和天皇の大喪の礼']],
|
745
|
-
[ 3, 3] => [[1868..1872, '弥生節句']],
|
746
|
-
[ 3, 0] => [[1879..1948, '春季皇霊祭'], [1949..2100, '春分の日']],
|
747
|
-
[ 4, 3] => [[1874..1948, '神武天皇祭']],
|
748
|
-
[ 4,10] => [[1959..1959, '皇太子明仁親王の結婚の儀']],
|
749
|
-
[ 4,29] => [[1927..1948, '天長節'], [1949..1988, '天皇誕生日'], [1989..2006, 'みどりの日'], [2007..2100, '昭和の日']],
|
750
|
-
[ 5, 3] => [[1949..2100, '憲法記念日']],
|
751
|
-
[ 5, 4] => [[2007..2100, 'みどりの日']],
|
752
|
-
[ 5, 5] => [[1868..1872, '端午節句'], [1949..2100, 'こどもの日']],
|
753
|
-
[ 6, 9] => [[1993..1993, '皇太子徳仁親王の結婚の儀']],
|
754
|
-
[ 7, 7] => [[1868..1872, '七夕節句']],
|
755
|
-
[ 7,15] => [[1868..1872, 'お盆']],
|
756
|
-
[ 7,20] => [[1996..2002, '海の日']],
|
757
|
-
[ 7,-3] => [[2003..2100, '海の日']],
|
758
|
-
[ 7,30] => [[1913..1926, '明治天皇祭']],
|
759
|
-
[ 8, 1] => [[1868..1872, '田実節句']],
|
760
|
-
[ 8,11] => [[2016..2100, '山の日']],
|
761
|
-
[ 8,31] => [[1913..1926, '天長節']],
|
762
|
-
[ 9, 9] => [[1868..1872, '重陽節句']],
|
763
|
-
[ 9,15] => [[1966..2002, '敬老の日']],
|
764
|
-
[ 9,-3] => [[2003..2100, '敬老の日']],
|
765
|
-
[ 9,17] => [[1874..1878, '神嘗祭']],
|
766
|
-
[ 9, 0] => [[1878..1947, '秋季皇霊祭'], [1948..2100, '秋分の日']],
|
767
|
-
[10,10] => [[1966..1999, '体育の日']],
|
768
|
-
[10,-2] => [[2000..2100, '体育の日']],
|
769
|
-
[10,17] => [[1879..1947, '神嘗祭']],
|
770
|
-
[10,31] => [[1913..1926, '天長節祝日']],
|
771
|
-
[11, 3] => [[1873..1911, '天長節'], [1927..1947, '明治節'], [1948..2100, '文化の日']],
|
772
|
-
[11,10] => [[1915..1915, '即位の礼'], [1928..1928, '即位の礼']],
|
773
|
-
[11,12] => [[1990..1990, '即位の礼正殿の儀']],
|
774
|
-
[11,14] => [[1915..1915, '大嘗祭'], [1928..1928, '大嘗祭']],
|
775
|
-
[11,16] => [[1915..1915, '大饗第1日'], [1928..1928, '大饗第1日']],
|
776
|
-
[11,23] => [[1873..1947, '新嘗祭'], [1948..2100, '勤労感謝の日']],
|
777
|
-
[12,23] => [[1989..2100, '天皇誕生日']],
|
778
|
-
[12,25] => [[1927..1947, '大正天皇祭']]
|
779
|
-
}
|
780
|
-
|
781
|
-
# @private
|
782
|
-
Long = {3=>0, 9=>180}
|
783
|
-
|
784
|
-
class << self
|
785
|
-
|
786
|
-
# 日の暦注 - 祝祭日の計算
|
787
|
-
# @private
|
788
|
-
def _day_notes(notes, dates, conditions={})
|
789
|
-
# 明治維新以降の実暦日のみ扱う
|
790
|
-
return notes if dates.o_date.frame.kind_of?(When::CalendarTypes::ChineseLuniSolar)
|
791
|
-
year = dates.o_date.most_significant_coordinate
|
792
|
-
return notes unless year >= 1868
|
793
|
-
|
794
|
-
# 春分の日と秋分の日を祝祭日に加える
|
795
|
-
long = Long[dates.o_date.cal_date[1]] if year >= 1878
|
796
|
-
if long
|
797
|
-
date = When.when?(dates.o_date.to_cal_date.to_s,
|
798
|
-
{:frame=>dates.o_date.frame,
|
799
|
-
:clock=>dates.s_date.frame.time_basis})
|
800
|
-
term = dates.cal4note.s_terms.term(date.floor(When::MONTH,
|
801
|
-
When::DAY), [long,360]).cal_date[1..2]
|
802
|
-
list = NotesList.dup
|
803
|
-
list[term] = list[[term[0],0]]
|
804
|
-
else
|
805
|
-
list = NotesList
|
806
|
-
end
|
807
|
-
|
808
|
-
# 「国民の休日」制定以前
|
809
|
-
notes['祝祭日'] ||= _holiday(list, dates.o_date, '振替休日')
|
810
|
-
return notes if notes['祝祭日'] || year < 1988
|
811
|
-
|
812
|
-
# 「国民の休日」制定以後
|
813
|
-
duration = When.Duration('P1D')
|
814
|
-
[duration, -duration].each do |d|
|
815
|
-
return notes unless _holiday(list, dates.o_date + d)
|
816
|
-
end
|
817
|
-
notes['祝祭日'] = '国民の休日'
|
818
|
-
return notes
|
819
|
-
end
|
820
|
-
|
821
|
-
private
|
822
|
-
|
823
|
-
# 振替休日とハッピーマンデーを考慮した祝祭日
|
824
|
-
def _holiday(list, date, alternate=nil)
|
825
|
-
y = date.most_significant_coordinate
|
826
|
-
m, d = date.cal_date[1..2]
|
827
|
-
|
828
|
-
# 「振替休日」制定以前
|
829
|
-
note = _note(list, y, m, d)
|
830
|
-
return note if note || y < 1973
|
831
|
-
|
832
|
-
# 「振替休日」制定以降
|
833
|
-
case date.to_i % 7
|
834
|
-
when 0 # 月曜
|
835
|
-
# 振替休日
|
836
|
-
note = _note(list, y, m, d-1)
|
837
|
-
return alternate if note
|
838
|
-
# ハッピーマンデー
|
839
|
-
note = _note(list, y, m, -((d-1)/7 + 1))
|
840
|
-
return note if note
|
841
|
-
when 1,2 # 火曜・水曜
|
842
|
-
# 振替休日
|
843
|
-
return alternate if y >= 2007 && m == 5 && d == 6
|
844
|
-
end
|
845
|
-
end
|
846
|
-
|
847
|
-
# 振替休日とハッピーマンデーを考慮しない祝祭日
|
848
|
-
def _note(list, year, month, day)
|
849
|
-
return nil if day == 0
|
850
|
-
year = [year, 2100].min
|
851
|
-
note = list[[month,day]]
|
852
|
-
return nil unless note
|
853
|
-
note.each do |range|
|
854
|
-
return range[1] if range[0].include?(year)
|
855
|
-
end
|
856
|
-
return nil
|
857
|
-
end
|
858
|
-
end
|
859
|
-
end
|
860
|
-
|
861
|
-
#
|
862
|
-
# 太陰太陽暦の暦注
|
863
|
-
#
|
864
|
-
class JapaneseLuniSolarNote < self
|
865
|
-
|
866
|
-
# 変換表 月日→27宿
|
867
|
-
StarMansions = [ # 正 2 3 4 5 6 7 8 9 10 11 12
|
868
|
-
[11, 13, 15, 17, 19, 21, 24, 0, 2, 4, 7, 9], # 0 : 本月本説 室12奎14胃16畢18參20鬼22張25角00氐02心04斗07虛10
|
869
|
-
[ 5, 3, 1, 25, 23, 21, 19, 16, 14, 11, 8, 7], # 1 : 本月異説 尾05房03亢01翼26星24鬼22參20昴17婁15室12女09斗07
|
870
|
-
[14, 16, 18, 20, 22, 24, 0, 3, 5, 7, 10, 12], # 2 : 閏月本説 婁15昴17觜19井21柳23張25角00房03尾05斗07危11壁13
|
871
|
-
[12, 14, 16, 18, 19, 21, 24, 0, 2, 5, 8, 10], # 3 : 閏月異説 壁13婁15昴17觜19參20鬼22張25角00氐02尾05女09危11
|
872
|
-
[14, 16, 18, 23, 22, 24, 0, 3, 5, 7, 8, 12] # 4 : 閏月本説(元) (星24) (女09)
|
873
|
-
]
|
874
|
-
|
875
|
-
# 変換表 27宿→28宿
|
876
|
-
StarMansionIndex = (0..7).to_a + (9..27).to_a
|
877
|
-
|
878
|
-
# 七曜と27宿で決まる暦注
|
879
|
-
WeekDepended = {
|
880
|
-
# 日 月 火 水 木 金 土
|
881
|
-
'甘露' => [26, 17, 5, 22, 21, 3, 23], # 軫27 畢18 尾05 柳23 鬼22 房03 星24
|
882
|
-
'金剛峯' => [ 5, 8, 12, 16, 20, 24, 1], # 尾05 女09 壁13 昴17 井21 張25 亢01
|
883
|
-
'羅刹' => [15, 21, 25, 19, 2, 13, 22] # 胃16 鬼22 翼26 参20 氐02 奎14 柳23
|
884
|
-
}
|
885
|
-
|
886
|
-
# 人神配当
|
887
|
-
HumanBody = %w(足大指 外踝 股内 腰 口 手 内踝 腕 尻 腰背
|
888
|
-
鼻柱 髪際 牙歯 胃管 遍身 胸 気街 股内 足 踝
|
889
|
-
足小指 足踝及胸、目下 肝及足 手陽明 足陽明 胸 膝 陰 膝晊 足跌)
|
890
|
-
|
891
|
-
#
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
notes['
|
919
|
-
notes['
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
notes['
|
930
|
-
|
931
|
-
#
|
932
|
-
notes['
|
933
|
-
notes
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
#
|
954
|
-
notes['
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
range
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
shoyo =
|
983
|
-
shoyo
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
#
|
1020
|
-
'
|
1021
|
-
'
|
1022
|
-
'
|
1023
|
-
'
|
1024
|
-
'
|
1025
|
-
'
|
1026
|
-
'
|
1027
|
-
'
|
1028
|
-
'
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1035
|
-
#
|
1036
|
-
'
|
1037
|
-
'
|
1038
|
-
'
|
1039
|
-
'
|
1040
|
-
'
|
1041
|
-
'
|
1042
|
-
'
|
1043
|
-
'
|
1044
|
-
'
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1053
|
-
%w(
|
1054
|
-
%w(
|
1055
|
-
%w(
|
1056
|
-
|
1057
|
-
|
1058
|
-
%w(
|
1059
|
-
|
1060
|
-
|
1061
|
-
%w(
|
1062
|
-
%w(
|
1063
|
-
%w(
|
1064
|
-
|
1065
|
-
|
1066
|
-
%w(
|
1067
|
-
|
1068
|
-
|
1069
|
-
%w(
|
1070
|
-
%w(
|
1071
|
-
%w(
|
1072
|
-
|
1073
|
-
|
1074
|
-
%w(
|
1075
|
-
|
1076
|
-
|
1077
|
-
%w(
|
1078
|
-
%w(
|
1079
|
-
%w(
|
1080
|
-
|
1081
|
-
|
1082
|
-
%w(
|
1083
|
-
|
1084
|
-
|
1085
|
-
%w(
|
1086
|
-
%w(
|
1087
|
-
%w(
|
1088
|
-
|
1089
|
-
|
1090
|
-
%w(
|
1091
|
-
|
1092
|
-
|
1093
|
-
%w(
|
1094
|
-
%w(
|
1095
|
-
%w(
|
1096
|
-
|
1097
|
-
|
1098
|
-
%w(
|
1099
|
-
|
1100
|
-
|
1101
|
-
%w(
|
1102
|
-
%w(
|
1103
|
-
%w(
|
1104
|
-
|
1105
|
-
|
1106
|
-
%w(
|
1107
|
-
|
1108
|
-
|
1109
|
-
%w(
|
1110
|
-
%w(
|
1111
|
-
%w(
|
1112
|
-
|
1113
|
-
|
1114
|
-
%w(
|
1115
|
-
|
1116
|
-
|
1117
|
-
%w(
|
1118
|
-
%w(
|
1119
|
-
%w(
|
1120
|
-
|
1121
|
-
|
1122
|
-
%w(
|
1123
|
-
|
1124
|
-
|
1125
|
-
%w(
|
1126
|
-
%w(
|
1127
|
-
%w(
|
1128
|
-
|
1129
|
-
|
1130
|
-
%w(
|
1131
|
-
|
1132
|
-
|
1133
|
-
%w(
|
1134
|
-
%w(
|
1135
|
-
%w(
|
1136
|
-
|
1137
|
-
|
1138
|
-
%w(
|
1139
|
-
|
1140
|
-
|
1141
|
-
%w(
|
1142
|
-
%w(
|
1143
|
-
%w(
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1149
|
-
|
1150
|
-
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1159
|
-
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
private
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
#
|
1212
|
-
#
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
notes['三伏'] = Notes10[
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
1250
|
-
|
1251
|
-
|
1252
|
-
|
1253
|
-
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
#
|
1278
|
-
#
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
#
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
|
1303
|
-
|
1304
|
-
|
1305
|
-
when
|
1306
|
-
|
1307
|
-
|
1308
|
-
|
1309
|
-
|
1310
|
-
|
1311
|
-
|
1312
|
-
#
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1317
|
-
notes['没'] =
|
1318
|
-
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1322
|
-
|
1323
|
-
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1328
|
-
|
1329
|
-
|
1330
|
-
|
1331
|
-
|
1332
|
-
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
notes['
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1351
|
-
|
1352
|
-
|
1353
|
-
|
1354
|
-
|
1355
|
-
|
1356
|
-
|
1357
|
-
|
1358
|
-
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
1364
|
-
notes['
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1368
|
-
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
when
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
1377
|
-
|
1378
|
-
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1384
|
-
end
|
1385
|
-
end
|
1386
|
-
end
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
=begin
|
3
|
+
Copyright (C) 2012-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
|
+
require 'when_exe/ephemeris/notes'
|
9
|
+
require 'when_exe/region/japanese/residues'
|
10
|
+
|
11
|
+
class When::CalendarNote
|
12
|
+
|
13
|
+
#
|
14
|
+
# 日本暦注
|
15
|
+
#
|
16
|
+
class Japanese < self
|
17
|
+
|
18
|
+
#
|
19
|
+
# 日本暦注が使用する暦法
|
20
|
+
#
|
21
|
+
# @private
|
22
|
+
class Cal4Note
|
23
|
+
def initialize(calendar, solar)
|
24
|
+
@calendar = calendar
|
25
|
+
@solar = solar
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
#
|
30
|
+
# 日本暦注の要素
|
31
|
+
#
|
32
|
+
# @private
|
33
|
+
class Note < When::CalendarNote::NoteElement
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
# 日本暦注の要素
|
38
|
+
#
|
39
|
+
Notes = [When::BasicTypes::M17n, [
|
40
|
+
"locale:[=ja:, en=en:]",
|
41
|
+
"names:[日本暦注]",
|
42
|
+
|
43
|
+
# 年の暦注 ----------------------------
|
44
|
+
[When::BasicTypes::M17n,
|
45
|
+
"names:[年]",
|
46
|
+
[Note, 0xFFFF, "label:[干支]", 'position:共通'], # 0: 干支
|
47
|
+
# [Note, 0xFFFF, "label:[干=ja:%%<十干>]",
|
48
|
+
# 'position:共通'], # 干
|
49
|
+
# [Note, 0xFFFF, "label:[支=ja:%%<十二支>]",
|
50
|
+
# 'position:共通'], # 支
|
51
|
+
[Note, 0x3800, "label:[廿八宿=ja:%%<二十八宿>]",
|
52
|
+
'position:共通'], # 1: 廿八宿
|
53
|
+
[Note, 0x3FFC, "label:[大歳壇=]", 'position:暦序'], # 2: 干支
|
54
|
+
[Note, 0xC000, "label:[九星]", 'position:民間'], # 3: 九星
|
55
|
+
[Note, 0xFFFC, "label:[納音]", 'position:暦序', 'suffix:是'], # 4: 干支
|
56
|
+
[Note, 0xFFFF, "label:[大歳=ja:%%<太歳神>]",
|
57
|
+
'position:暦序', 'suffix:在'], # 5: 干支
|
58
|
+
[Note, 0xFFFF, "label:[大將軍=ja:%%<大将軍_(方位神)>]",
|
59
|
+
'position:暦序', 'suffix:在'], # 6: 支
|
60
|
+
[Note, 0xFFFF, "label:[大陰=ja:%%<太陰神>]",
|
61
|
+
'position:暦序', 'suffix:在'], # 7: 支
|
62
|
+
[Note, 0xFFFF, "label:[歳徳=ja:%%<歳徳神>]",
|
63
|
+
'position:暦序', 'suffix:在'], # 8: 干
|
64
|
+
[Note, 0xFFFF, "label:[歳刑=ja:%%<歳刑神>]",
|
65
|
+
'position:暦序', 'suffix:在'], # 9: 支
|
66
|
+
[Note, 0xFFFF, "label:[歳破=ja:%%<歳破神>]",
|
67
|
+
'position:暦序', 'suffix:在'], # 10: 支
|
68
|
+
[Note, 0xFFFF, "label:[歳煞=ja:%%<歳煞神>]",
|
69
|
+
'position:暦序', 'suffix:在'], # 11: 支
|
70
|
+
[Note, 0xFFFF, "label:[黄幡=ja:%%<黄幡神>]",
|
71
|
+
'position:暦序', 'suffix:在'], # 12: 支
|
72
|
+
[Note, 0xFFFF, "label:[豹尾=ja:%%<豹尾神>]",
|
73
|
+
'position:暦序', 'suffix:在'], # 13: 支
|
74
|
+
[Note, 0x0003, "label:[天道=]", 'position:暦序', 'suffix:-'], # 14: 支
|
75
|
+
[Note, 0x0003, "label:[人道=]", 'position:暦序', 'suffix:-'], # 15: 支
|
76
|
+
[Note, 0x3FFC, "label:[歳次=]", 'position:暦序', 'suffix:-'], # 16: 支
|
77
|
+
[Note, 0xF800, "label:[金神]", 'position:仮名暦', 'suffix:在'], # 17: 干
|
78
|
+
[Note, 0xFFFF, "label:[大小]", 'position:暦序'] # 18: 朔閏表
|
79
|
+
],
|
80
|
+
|
81
|
+
# 月の暦注 ----------------------------
|
82
|
+
[When::BasicTypes::M17n,
|
83
|
+
"names:[月]",
|
84
|
+
[Note, 0xFFFF, "label:[月名=ja:%%<月_(暦)>#%.<日本の和風月名>, Month]",
|
85
|
+
'position:月建'], # 0: 月の和名
|
86
|
+
# [Note, 0xFFFF, "label:[干支]", 'position:共通'], # 干支
|
87
|
+
# [Note, 0xFFFF, "label:[干=ja:%%<十干>]",
|
88
|
+
# 'position:共通'], # 干
|
89
|
+
# [Note, 0xFFFF, "label:[支=ja:%%<十二支>]",
|
90
|
+
# 'position:共通'], # 支
|
91
|
+
[Note, 0xF800, "label:[廿八宿=ja:%%<二十八宿>]",
|
92
|
+
'position:共通'], # 1: 廿八宿
|
93
|
+
[Note, 0xFFFC, "label:[月建=]", 'position:月建', 'suffix:-' ], # 2: 年の十干と暦月
|
94
|
+
[Note, 0xC000, "label:[九星]", 'position:民間'], # 3: 九星
|
95
|
+
[Note, 0x0003, "label:[天氣=]", 'position:月建', 'suffix:-' ], # 4: 暦月
|
96
|
+
[Note, 0x3FFF, "label:[天道=]", 'position:月建', 'suffix:-' ], # 5: 暦月
|
97
|
+
[Note, 0x0003, "label:[人道=]", 'position:月建', 'suffix:-' ], # 6: 暦月
|
98
|
+
[Note, 0x0003, "label:[月破=]", 'position:月建', 'suffix:在'], # 7: 暦月
|
99
|
+
[Note, 0x3FFC, "label:[天徳=]", 'position:月建', 'suffix:在'], # 8: 暦月
|
100
|
+
[Note, 0x3FFF, "label:[月煞=]", 'position:月建', 'suffix:在'], # 9: 暦月
|
101
|
+
[Note, 0x3FFF, "label:[用時=]", 'position:月建', 'suffix:-' ], # 10: 暦月
|
102
|
+
[Note, 0x3FFF, "label:[月徳=]", 'position:月建', 'suffix:在'], # 11: 暦月
|
103
|
+
[Note, 0x3FFC, "label:[月徳合=]", 'position:月建', 'suffix:在'], # 12: 暦月
|
104
|
+
[Note, 0x3FFC, "label:[月空=]", 'position:月建', 'suffix:在'], # 13: 暦月
|
105
|
+
[Note, 0x3FFF, "label:[三鏡=]", 'position:月建', 'suffix:-' ], # 14: 暦月
|
106
|
+
[Note, 0x3FFF, "label:[土府=]", 'position:月建', 'suffix:在'], # 15: 暦月
|
107
|
+
[Note, 0x3FFC, "label:[土公=ja:%%<土公神>]",
|
108
|
+
'position:月建', 'suffix:在'], # 16: 暦月
|
109
|
+
[Note, 0xFFFF, "label:[大小]", 'position:月建'] # 17: 朔閏表
|
110
|
+
],
|
111
|
+
|
112
|
+
# 日の暦注 ----------------------------
|
113
|
+
[When::BasicTypes::M17n,
|
114
|
+
"names:[日]",
|
115
|
+
[Note, 0xFFFF, "label:[干支]", 'position:共通'], # 0: 干支
|
116
|
+
# [Note, 0x, "label:[干=ja:%%<十干>]",
|
117
|
+
# 'position:共通'], # 干
|
118
|
+
# [Note, 0x, "label:[支=ja:%%<十二支>]",
|
119
|
+
# 'position:共通'], # 支
|
120
|
+
[Note, 0x3FFF, "label:[納音]", 'position:共通', 'suffix:是'], # 1: 干支
|
121
|
+
[Note, 0xFFFF, "label:[十二直]", 'position:共通'], # 2: 支 節月
|
122
|
+
[Note, 0xFFFF, "label:[七曜]", 'position:共通'], # 3: 七曜
|
123
|
+
[Note, 0xF800, "label:[廿八宿=ja:%%<二十八宿>]",
|
124
|
+
'position:共通'], # 4: 廿八宿
|
125
|
+
[Note, 0x07F8, "label:[廿七宿=ja:%%<二十八宿>]",
|
126
|
+
'position:共通'], # 5: 暦月 暦日
|
127
|
+
[Note, 0xC000, "label:[九星]", 'position:民間'], # 6: 九星
|
128
|
+
[Note, 0x8000, "label:[六曜]", 'position:民間'], # 7: 暦月 暦日
|
129
|
+
[Note, 0xE000, "label:[祝祭日]", 'position:祝祭日'], # 8: 暦月 暦日 (七曜)
|
130
|
+
[Note, 0xFFFF, "label:[廿四節気=ja:%%<二十四節気>]",
|
131
|
+
'position:時候'], # 9: 太陽黄経
|
132
|
+
[Note, 0xFFFF, "label:[節中=]", 'position:時候'], # 10: 太陽黄経
|
133
|
+
[Note, 0xFFFC, "label:[七十二候]", 'position:時候'], # 11: 太陽黄経
|
134
|
+
[Note, 0x3FFC, "label:[六十卦=]", 'position:時候'], # 12: 太陽黄経
|
135
|
+
[Note, 0xF800, "label:[節分]", 'position:雑節'], # 13: 立春からの日数
|
136
|
+
[Note, 0xF800, "label:[初午]", 'position:雑節'], # 14: 支 節月 or 暦月
|
137
|
+
[Note, 0xF800, "label:[八十八夜]", 'position:雑節'], # 15: 立春からの日数
|
138
|
+
[Note, 0xF800, "label:[入梅]", 'position:雑節'], # 16: 干 太陽黄経
|
139
|
+
[Note, 0xF800, "label:[半夏生]", 'position:雑節'], # 17: 干 太陽黄経
|
140
|
+
[Note, 0xF800, "label:[二百十日]", 'position:雑節'], # 18: 立春からの日数
|
141
|
+
[Note, 0xF800, "label:[二百廿日]", 'position:雑節'], # 19: 立春からの日数
|
142
|
+
|
143
|
+
[Note, 0x3FFC, "label:[大禍=ja:%%<暦注下段>#%.<大禍日>]",
|
144
|
+
'position:上段 上段 欄外 欄外', 'suffix:日'], # 20: 支 節月
|
145
|
+
[Note, 0x3FFC, "label:[滅門=ja:%%<暦注下段>#%.<滅門日>]",
|
146
|
+
'position:上段 上段 欄外 欄外', 'suffix:日'], # 21: 支 節月
|
147
|
+
[Note, 0x3FFC, "label:[狼藉=ja:%%<暦注下段>#%.<狼藉日>]",
|
148
|
+
'position:上段 上段 欄外 欄外', 'suffix:日'], # 22: 支 節月
|
149
|
+
|
150
|
+
[Note, 0x07F8, "label:[甘露=]", 'position:上段 上段 上段 上段', 'suffix:日'], # 23: 七曜 廿七宿
|
151
|
+
[Note, 0x07F8, "label:[金剛峯=]", 'position:上段 上段 上段 上段'], # 24: 七曜 廿七宿
|
152
|
+
[Note, 0x07F8, "label:[羅刹=]", 'position:上段 上段 上段 上段'], # 25: 七曜 廿七宿
|
153
|
+
|
154
|
+
[Note, 0x3FFC, "label:[大將軍=ja:%%<大将軍_(方位神)>]",
|
155
|
+
'position:上段 上段 上段 上段', 'suffix:-'], # 26: 干支 節年
|
156
|
+
[Note, 0xFFFC, "label:[天一=ja:%%<天一神>]",
|
157
|
+
'position:上段 上段 上段 上段', 'suffix:-'], # 27: 干支
|
158
|
+
[Note, 0x3FFC, "label:[土公=ja:%%<土公神>]",
|
159
|
+
'position:上段 上段 上段 上段', 'suffix:-'], # 28: 干支
|
160
|
+
[Note, 0x3FFC, "label:[歳下食=ja:%%<暦注下段>#%.<歳下食>]",
|
161
|
+
'position:上段 上段 上段 上段'], # 29: 干支 節年
|
162
|
+
[Note, 0x3FFC, "label:[忌遠行=]", 'position:上段 上段 上段 上段'], # 30: 支 節月
|
163
|
+
[Note, 0x3FFC, "label:[忌夜行=]", 'position:上段 上段 上段 上段'], # 31: 支 節月
|
164
|
+
[Note, 0x3FFC, "label:[下食時=ja:%%<暦注下段>#%.<時下食>]",
|
165
|
+
'position:上段 上段 上段 上段', 'suffix:-'], # 32: 支 節月 貞享暦で一部廃止
|
166
|
+
[Note, 0x3FFC, "label:[天間=]", 'position:上段 上段 上段 中段上'], # 33: 干支 節月
|
167
|
+
[Note, 0x3FFC, "label:[不視病=]", 'position:上段 上段 上段 上段'], # 34: 干
|
168
|
+
[Note, 0x3FFC, "label:[不問疾=]", 'position:上段 上段 上段 上段'], # 35: 干
|
169
|
+
[Note, 0x3FFC, "label:[不弔人=]", 'position:上段 上段 上段 上段'], # 36: 支
|
170
|
+
[Note, 0xFFFC, "label:[彼岸]", 'position:仮名暦'], # 37: 太陽黄経
|
171
|
+
[Note, 0xFFFF, "label:[社=ja:%%<社日>]",
|
172
|
+
'position:中段 中段 中段 中段', 'suffix:日'], # 38: 干 太陽黄経
|
173
|
+
[Note, 0xFFFF, "label:[三伏]", 'position:中段 中段 中段 中段'], # 39: 干 太陽黄経
|
174
|
+
[Note, 0x3FFC, "label:[除手足甲=]", 'position:中段 中段 中段 中段'], # 40: 晦(除手足甲)、支(片方のみ), 没滅凶会日×
|
175
|
+
[Note, 0x3FFC, "label:[沐浴=]", 'position:中段 中段 中段 中段'], # 41: 支 没滅凶会日×
|
176
|
+
[Note, 0x3FFD, "label:[臘=ja:%%<臘日>]",
|
177
|
+
'position:中段 中段 中段 中段', 'suffix:日'], # 42: 支 太陽黄経
|
178
|
+
[Note, 0x3FFC, "label:[伐=]", 'position:中段 中段 中段 中段上', 'suffix:日'], # 43: 干支
|
179
|
+
[Note, 0x3FFC, "label:[五墓=ja:%%<暦注下段>#%.<五墓日>]",
|
180
|
+
'position:中段 中段 中段 中段下', 'suffix:日'], # 44: 干支
|
181
|
+
[Note, 0x3FFC, "label:[六蛇=]", 'position:中段 中段 中段 中段上'], # 45: 干支 節月
|
182
|
+
[Note, 0x3FFC, "label:[七鳥=]", 'position:中段 中段 中段 中段上'], # 46: 干支 節月
|
183
|
+
[Note, 0x3FFC, "label:[八龍=]", 'position:中段 中段 中段 中段上'], # 47: 干支 節月
|
184
|
+
[Note, 0x3FFC, "label:[九虎=]", 'position:中段 中段 中段 中段上'], # 48: 干支 節月
|
185
|
+
[Note, 0x07FF, "label:[没=ja:%%<没日>]",
|
186
|
+
'position:中段 中段 中段 中段', 'suffix:日'], # 49: 太陽黄経
|
187
|
+
[Note, 0xFFF8, "label:[日食]", 'position:中段 中段 中段 中段'], # 50: 日食表
|
188
|
+
[Note, 0x07FC, "label:[滅=ja:%%<滅日]",
|
189
|
+
'position:中段 中段 中段 中段', 'suffix:日'], # 51: 月の位相
|
190
|
+
[Note, 0xFFF8, "label:[月食]", 'position:中段 中段 中段 中段'], # 52: 月食表
|
191
|
+
[Note, 0xC7FD, "label:[月相]", 'position:中段 中段 中段 中段'], # 53: 月の位相
|
192
|
+
[Note, 0xFFFF, "label:[土用事=ja:%%<土用>]",
|
193
|
+
'position:中段 中段 中段 中段'], # 54: 太陽黄経
|
194
|
+
[Note, 0x3FF0, "label:[伏龍=]", 'position:上段 上段 下段 下段', 'suffix:在'], # 55: 太陽黄経
|
195
|
+
|
196
|
+
[Note, 0x3FFF, "label:[凶会=ja:%%<暦注下段>#%.<凶会日>]",
|
197
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 56: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
|
198
|
+
[Note, 0x3FFF, "label:[大小歳=]", 'position:下段 下段 下段 下段'], # 57: 干支 節月
|
199
|
+
[Note, 0x3FFC, "label:[歳徳=ja:%%<歳徳神>]",
|
200
|
+
'position:下段 下段 下段 下段'], # 58: 干 節年 凶会日× ~合も
|
201
|
+
[Note, 0x0003, "label:[天倉=]", 'position:古注'], # 59: 干支 節月
|
202
|
+
# [Note, 0x0003, "label:[天李=]", 'position:古注'], # 干支 節月?
|
203
|
+
[Note, 0x37FF, "label:[天恩=ja:%%<暦注下段>#%.<天恩日>]",
|
204
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 60: 干支 節月 凶会日×
|
205
|
+
[Note, 0xFFFF, "label:[天赦=ja:%%<暦注下段>#%.<天赦日>]",
|
206
|
+
'position:下段 下段 下段 下段'], # 61: 干支 節月
|
207
|
+
[Note, 0x37FF, "label:[母倉=ja:%%<暦注下段>#%.<母倉日>]",
|
208
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 62: 支 節月 凶会日×
|
209
|
+
[Note, 0x37FC, "label:[月徳=]", 'position:下段 下段 下段 下段'], # 63: 干 節月 凶会日× ~合も
|
210
|
+
[Note, 0x3FFF, "label:[九坎=]", 'position:下段 下段 下段 下段'], # 64: 支 節月
|
211
|
+
[Note, 0x3FFF, "label:[歸忌=ja:%%<暦注下段>#%.<帰忌日>]",
|
212
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 65: 支 節月
|
213
|
+
[Note, 0x3FFF, "label:[血忌=ja:%%<暦注下段>#%.<血忌日>]",
|
214
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 66: 支 節月
|
215
|
+
[Note, 0x3FFC, "label:[無翹=]", 'position:下段 下段 下段 下段'], # 67: 支 節月
|
216
|
+
[Note, 0x3FFF, "label:[厭=]", 'position:下段 下段 下段 下段'], # 68: 支 節月
|
217
|
+
[Note, 0x3FFC, "label:[重=ja:%%<暦注下段>#%.<重日>]",
|
218
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 69: 支
|
219
|
+
[Note, 0x3FFD, "label:[復=ja:%%<暦注下段>#%.<復日>]",
|
220
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 70: 干 節月
|
221
|
+
[Note, 0x3FFC, "label:[月煞=]", 'position:下段 下段 下段 下段'], # 71: 支 節月
|
222
|
+
[Note, 0x3FFF, "label:[往亡=ja:%%<暦注下段>#%.<往亡日>]",
|
223
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 72: 太陽黄経
|
224
|
+
[Note, 0x3FFF, "label:[日遊=ja:%%<日遊神>]",
|
225
|
+
'position:最下段', 'suffix:在'], # 73: 干支
|
226
|
+
[Note, 0x07FF, "label:[人神配当=]", 'position:最下段孟月', 'suffix:-'], # 74: 暦日
|
227
|
+
|
228
|
+
[Note, 0x3E00, "label:[受死=ja:%%<暦注下段>#%.<受死日>]",
|
229
|
+
'position:仮名暦', 'suffix:日'], # 75: 支 節月
|
230
|
+
[Note, 0xFFF0, "label:[八專]", 'position:仮名暦'], # 76: 干支
|
231
|
+
[Note, 0x3E00, "label:[八專間日=ja:%%<八専>]",
|
232
|
+
'position:仮名暦'], # 77: 干支
|
233
|
+
[Note, 0xC000, "label:[金神間日=ja:%%<金神>#%.<金神の遊行・間日>]",
|
234
|
+
'position:仮名暦'], # 78: 支 節月
|
235
|
+
[Note, 0xC000, "label:[金神遊行=ja:%%<金神>#%.<金神の遊行・間日>]",
|
236
|
+
'position:仮名暦'], # 79: 支 節月
|
237
|
+
[Note, 0x3FF0, "label:[天火=ja:%%<暦注下段>#%.<天火日>]",
|
238
|
+
'position:仮名暦', 'suffix:日'], # 80: 支 節月
|
239
|
+
[Note, 0x3FF0, "label:[地火=ja:%%<暦注下段>#%.<地火日>]",
|
240
|
+
'position:仮名暦', 'suffix:日'], # 81: 支 節月
|
241
|
+
[Note, 0x3800, "label:[人火=]", 'position:仮名暦'], # 82: 支 節月
|
242
|
+
[Note, 0x3800, "label:[雷火=]", 'position:仮名暦'], # 83: 支 節月
|
243
|
+
[Note, 0x3FF0, "label:[赤舌=ja:%%<赤舌日>]",
|
244
|
+
'position:仮名暦', 'suffix:日'], # 84: 暦月 暦日
|
245
|
+
[Note, 0x3E00, "label:[十死=ja:%%<暦注下段>#%.<十死日>]",
|
246
|
+
'position:仮名暦', 'suffix:日'], # 85: 支 節月
|
247
|
+
[Note, 0x3E00, "label:[道虚=]", 'position:仮名暦', 'suffix:日'], # 86: 暦日
|
248
|
+
[Note, 0x3E00, "label:[大明=ja:%%<暦注下段>#%.<大明日>]",
|
249
|
+
'position:仮名暦', 'suffix:日'], # 87: 干支
|
250
|
+
[Note, 0x0600, "label:[大赤=ja:%%<赤口日>]",
|
251
|
+
'position:仮名暦', 'suffix:日'], # 88: 暦月 暦日
|
252
|
+
[Note, 0xF800, "label:[甲子待=ja:%%<甲子>]",
|
253
|
+
'position:仮名暦'], # 89: 干支
|
254
|
+
[Note, 0xC000, "label:[己巳]", 'position:仮名暦'], # 90: 干支
|
255
|
+
[Note, 0xF800, "label:[庚申待]", 'position:仮名暦'], # 91: 干支
|
256
|
+
[Note, 0x3800, "label:[犯土]", 'position:仮名暦'], # 92: 干支
|
257
|
+
[Note, 0xF800, "label:[十方暮]", 'position:仮名暦'], # 93: 干支
|
258
|
+
[Note, 0xF800, "label:[一粒万倍=ja:%%<一粒万倍日>]",
|
259
|
+
'position:仮名暦', 'suffix:日'], # 94: 支 節月
|
260
|
+
[Note, 0x3800, "label:[天福=]", 'position:仮名暦'], # 95: 支 節月
|
261
|
+
[Note, 0x3800, "label:[地福=]", 'position:仮名暦'], # 96: 支 節月
|
262
|
+
[Note, 0x3800, "label:[地五福=]", 'position:仮名暦'], # 97: 支 節月
|
263
|
+
[Note, 0xB800, "label:[三隣亡]", 'position:仮名暦'], # 98: 支 節月
|
264
|
+
[Note, 0xF800, "label:[不成就=ja:%%<不成就日>]",
|
265
|
+
'position:仮名暦', 'suffix:日'], # 99: 暦月 暦日/晦日
|
266
|
+
[Note, 0x3800, "label:[鬼宿]", 'position:仮名暦'], #100: 廿八宿
|
267
|
+
[Note, 0x3800, "label:[金性=]", 'position:仮名暦'], #101: 支 節月 支 節年
|
268
|
+
[Note, 0x3FFF, "label:[三寶吉=ja:%%<三宝吉>]",
|
269
|
+
'position:上段 上段 上段 上段'], #102: 干支 節月
|
270
|
+
[Note, 0x3FFF, "label:[神吉=ja:%%<暦注下段>#%.<神日>]",
|
271
|
+
'position:上段 上段 中段 中段上', 'suffix:日'], #103: 干支 節月
|
272
|
+
[Note, 0x3FFF, "label:[雑事吉=]", 'position:雑事吉'], #104: 干支 節月
|
273
|
+
[Note, 0x3FFF, "label:[小字注=]", 'position:下段小字 下段小字 下段小字 下段小字'],#105: 干支 節月
|
274
|
+
]
|
275
|
+
]]
|
276
|
+
|
277
|
+
#
|
278
|
+
# 日本暦注の時代変遷
|
279
|
+
#
|
280
|
+
# @private
|
281
|
+
NoteTypes = (2...When::TM::CalendarEra::JapaneseSolar[1].size).to_a.map {|i|
|
282
|
+
calendars =
|
283
|
+
[When::TM::CalendarEra::JapaneseLuniSolar[1][i][2],
|
284
|
+
When::TM::CalendarEra::JapaneseSolar[1][i][2]].map {|epoch|
|
285
|
+
epoch =~ /\A(-?\d+)-(\d+)-(\d+)\^(.+)\z/
|
286
|
+
$4
|
287
|
+
}
|
288
|
+
[$2 == '01' ? $1.to_i : $1.to_i+1, Cal4Note.new(*calendars)]
|
289
|
+
}.reverse
|
290
|
+
|
291
|
+
# @private
|
292
|
+
NoteRange = [
|
293
|
+
# 開始 具注暦 七十二候 index mask
|
294
|
+
[-660, 0, 0], # ~ 696 0 : 0001
|
295
|
+
[ 697, 0, 0], # ~ 763 1 : 0002
|
296
|
+
[ 764, 0, 2], # ~ 800 2 : 0004
|
297
|
+
[ 801, 0, 2], # ~ 900 3 : 0008
|
298
|
+
[ 901, 0, 2], # ~1003 4 : 0010
|
299
|
+
[1004, 1, 2], # ~1047 5 : 0020
|
300
|
+
[1048, 1, 2], # ~1100 6 : 0040
|
301
|
+
[1101, 1, 2], # ~1184 7 : 0080
|
302
|
+
[1185, 2, 2], # ~1300 8 : 0100
|
303
|
+
[1301, 2, 2], # ~1337 9 : 0200
|
304
|
+
[1338, 3, 2], # ~1684 10 : 0400
|
305
|
+
[1685, 3, 3], # ~1754 11 : 0800
|
306
|
+
[1755, 3, 4], # ~1867 12 : 1000
|
307
|
+
[1868, 3, 4], # ~1872 13 : 2000
|
308
|
+
[1873, 3, 4], # ~1873 14 : 4000
|
309
|
+
[1874, 3, 5] # ~ 15 : 8000
|
310
|
+
]
|
311
|
+
|
312
|
+
# @private
|
313
|
+
NoteFocused = (0...NoteRange.size).to_a.map {|range|
|
314
|
+
(2..4).to_a.map {|cord|
|
315
|
+
notes = Notes[1][cord]
|
316
|
+
(2...notes.size).to_a.inject([]) {|focused,note|
|
317
|
+
focused << notes[note][2][/\[.+?[=\]]/][1..-2] if notes[note][1][range] == 1
|
318
|
+
focused
|
319
|
+
}
|
320
|
+
}
|
321
|
+
}
|
322
|
+
|
323
|
+
#
|
324
|
+
# 月の大小
|
325
|
+
#
|
326
|
+
# @private
|
327
|
+
MonthPattern = {
|
328
|
+
29 => '小',
|
329
|
+
30 => '大',
|
330
|
+
-28 => '平',
|
331
|
+
-29 => '閏',
|
332
|
+
-30 => '小',
|
333
|
+
-31 => '大'
|
334
|
+
}
|
335
|
+
|
336
|
+
#
|
337
|
+
# 日本暦注に対応するインデックス(整数値)
|
338
|
+
#
|
339
|
+
# @private
|
340
|
+
module Index
|
341
|
+
# @private
|
342
|
+
[[2,'Y'], [3,'M'], [4,'D']].map {|cord|
|
343
|
+
index, initial = cord
|
344
|
+
notes = Notes[1][index]
|
345
|
+
(notes.size-2).times {|no|
|
346
|
+
name = initial + notes[no+2][2][/\[.+?[=\]]/][1..-2]
|
347
|
+
mask = 'M' + name
|
348
|
+
const_set(name, no)
|
349
|
+
const_set(mask, 1<<no)
|
350
|
+
}
|
351
|
+
}
|
352
|
+
end
|
353
|
+
|
354
|
+
#
|
355
|
+
# 日本暦注が使用する暦法
|
356
|
+
#
|
357
|
+
# @private
|
358
|
+
class Cal4Note
|
359
|
+
attr_reader :calendar, :solar
|
360
|
+
|
361
|
+
def l_calendar
|
362
|
+
@l_calendar ||= When.Calendar(@calendar)
|
363
|
+
end
|
364
|
+
|
365
|
+
def s_calendar
|
366
|
+
@s_calendar ||= When.Calendar(@solar)
|
367
|
+
end
|
368
|
+
|
369
|
+
def l_phases
|
370
|
+
@l_phases ||= Japanese::LunarPhases.new('formula'=>l_calendar.formula[-1])
|
371
|
+
end
|
372
|
+
|
373
|
+
def s_terms
|
374
|
+
@s_terms ||= Japanese::SolarTerms.new('formula'=>s_calendar.formula[0])
|
375
|
+
end
|
376
|
+
|
377
|
+
def doyo
|
378
|
+
s_calendar.doyo
|
379
|
+
end
|
380
|
+
end
|
381
|
+
|
382
|
+
#
|
383
|
+
# 日本暦注用の Notes の要素のための内部クラス
|
384
|
+
#
|
385
|
+
# @private
|
386
|
+
class Note
|
387
|
+
|
388
|
+
attr_reader :label, :position, :suffix
|
389
|
+
|
390
|
+
def to_note_hash(note, dates=nil)
|
391
|
+
{
|
392
|
+
:note => self,
|
393
|
+
:value => case @suffix
|
394
|
+
when '是' ; [@label + '是-', note[/.\z/]]
|
395
|
+
when '在' ; [@label + '在-', note]
|
396
|
+
when '-' ; [@label + '-', note]
|
397
|
+
else ; note
|
398
|
+
end,
|
399
|
+
:position => @position[@position.size == 1 ? 0 : dates.index_g]
|
400
|
+
}
|
401
|
+
end
|
402
|
+
|
403
|
+
private
|
404
|
+
# オブジェクトの正規化
|
405
|
+
#
|
406
|
+
def _normalize(args=[], options={})
|
407
|
+
@position = @position.split(/ /)
|
408
|
+
end
|
409
|
+
end
|
410
|
+
|
411
|
+
#
|
412
|
+
# 日本暦注計算に必要となる暦日や暦法をまとめた内部クラス
|
413
|
+
#
|
414
|
+
# @private
|
415
|
+
class Dates
|
416
|
+
|
417
|
+
attr_reader :year, :precision, :cal4note, :range, :index_g, :index_s, :o_date, :l_date, :m_date, :s_date
|
418
|
+
|
419
|
+
# 初期設定
|
420
|
+
def initialize(date, year=date.most_significant_coordinate, precision=date.precision, cal4note=nil)
|
421
|
+
|
422
|
+
# 暦注パターン
|
423
|
+
if cal4note
|
424
|
+
# 年代による判定
|
425
|
+
(1...NoteRange.size).to_a.reverse.each do |i|
|
426
|
+
if year >= NoteRange[i][0]
|
427
|
+
@range = i
|
428
|
+
break
|
429
|
+
end
|
430
|
+
end
|
431
|
+
@range ||= 0
|
432
|
+
else
|
433
|
+
# 暦法による判定
|
434
|
+
cal4note = Cal4Note.new(date.frame, date.frame.twin)
|
435
|
+
@range =
|
436
|
+
case cal4note.l_calendar.formula[-1]
|
437
|
+
when When::Ephemeris::ChineseTrueLunation::JujiMethods ; 11 # 江戸時代の暦
|
438
|
+
when When::Ephemeris::ChineseTrueLunation
|
439
|
+
date.frame.twin =~ /戊寅|麟徳/ ? 1 : 10 # 唐代定朔暦(儀鳳暦 or 宣明暦)
|
440
|
+
when When::Ephemeris::MeanLunation ; 0 # 唐代以前平朔暦(元嘉暦)
|
441
|
+
else ; 15 # 現代の旧暦
|
442
|
+
end
|
443
|
+
end
|
444
|
+
|
445
|
+
# 具注暦の配置
|
446
|
+
@index_g = NoteRange[@range][1]
|
447
|
+
|
448
|
+
# 七十二候
|
449
|
+
@index_s = NoteRange[@range][2]
|
450
|
+
|
451
|
+
# その他の属性
|
452
|
+
@year = year
|
453
|
+
@precision = precision
|
454
|
+
@cal4note = cal4note
|
455
|
+
@o_date = date
|
456
|
+
@l_date = @cal4note.l_calendar ^ date
|
457
|
+
@m_date = date.frame.kind_of?(When::CalendarTypes::Christian) ? @l_date : @o_date
|
458
|
+
@s_date = @cal4note.s_calendar ^ date
|
459
|
+
end
|
460
|
+
end
|
461
|
+
|
462
|
+
NoteMethods = [:year_notes, :month_notes, :day_notes]
|
463
|
+
|
464
|
+
# 暦注の計算
|
465
|
+
#
|
466
|
+
# @param [When::TM::TemporalPosition] date 暦注を計算する日時
|
467
|
+
# (date が When::TM::TemporalPosition でない場合、When::TM::TemporalPosition に変換して使用する)
|
468
|
+
# @param [Hash] options
|
469
|
+
# :indices, :notes およびその他のキー => {When::CalendarNote#notes} を参照
|
470
|
+
#
|
471
|
+
# @return [Hash] :notes が String の場合
|
472
|
+
# @return [Array<Hash>] 上記に該当せず、:indices が Integer の場合
|
473
|
+
# @return [Array<Array<Hash>>] 上記のいずれにも該当しない場合
|
474
|
+
# @note return 値の [Hash] の要素は下記の通り
|
475
|
+
# :note => 暦注要素 (When::CalendarTypes::Japanese::Note)
|
476
|
+
# :value => 暦注の値 (String or When::BasicTypes::M17n または、その Array)
|
477
|
+
# :position => 具注暦でのその暦注の配置場所(String)
|
478
|
+
#
|
479
|
+
def notes(date, options={})
|
480
|
+
dates, indices, notes, persistence, conditions, options = _parse_note(date, options)
|
481
|
+
NotesContainer.register(indices.map {|i|
|
482
|
+
next [] unless i <= dates.precision
|
483
|
+
send(NoteMethods[i-1], dates, notes[i-1], conditions)
|
484
|
+
}, persistence, date.to_i)
|
485
|
+
end
|
486
|
+
|
487
|
+
# 太陽の位置 => 日時
|
488
|
+
#
|
489
|
+
# @param [When::TM::TemporalPosition] date 探す基準とする日時
|
490
|
+
# @param [Array<Numeric>] parameter 太陽の位置の分子と分母( num, den)
|
491
|
+
#
|
492
|
+
# num 分子 (デフォルト 0 : 基準日時直後の春分)
|
493
|
+
#
|
494
|
+
# den 分母 (デフォルト 360 : 検索範囲の長さ)
|
495
|
+
#
|
496
|
+
# @param [String] parameter 太陽の位置の分子と分母("#{ num }/#{ den }" の形式, デフォルト 0(春分))
|
497
|
+
# @param [Integer] precision 取得したい時間位置の分解能(デフォルト date の分解能)
|
498
|
+
#
|
499
|
+
# @return [When::TM::CalDate] date またはその直後に太陽の位置が指定の値になる日時
|
500
|
+
#
|
501
|
+
def term(date, parameter=nil, precision=date.precision)
|
502
|
+
dates = _to_date_for_note(date)
|
503
|
+
result = dates.cal4note.s_terms.term(date, parameter)
|
504
|
+
patch = SolarTerms::Patch[result.to_i]
|
505
|
+
return result unless patch
|
506
|
+
num, den = parameter.kind_of?(String) ? parameter.split('/', 2) : parameter
|
507
|
+
num = (num || 0).to_f
|
508
|
+
den = (den || 360).to_f
|
509
|
+
diff = (num - patch[0] + 1) % den - 1
|
510
|
+
return result if diff == 0
|
511
|
+
patched = result + When::P1D * diff
|
512
|
+
result.cal_date[0..-2] = patched.cal_date[0..-2]
|
513
|
+
result.cal_date[-1] = When::Coordinates::Pair.new(patched.cal_date[-1], -diff)
|
514
|
+
result
|
515
|
+
end
|
516
|
+
|
517
|
+
# 月の位相 => 日時
|
518
|
+
#
|
519
|
+
# @param [When::TM::TemporalPosition] date 探す基準とする日時
|
520
|
+
# @param [Array<Numeric>] parameter 月の位相の分子と分母( num, den)
|
521
|
+
#
|
522
|
+
# num 分子 (デフォルト 0 : 基準日時直後の朔)
|
523
|
+
#
|
524
|
+
# den 分母 (デフォルト 30 : 検索範囲の長さ)
|
525
|
+
#
|
526
|
+
# @param [String] parameter 月の位相の分子と分母("#{ num }/#{ den }" の形式, デフォルト 0(朔))
|
527
|
+
# @param [Integer] precision 取得したい時間位置の分解能(デフォルト date の分解能)
|
528
|
+
#
|
529
|
+
# @return [When::TM::CalDate] date またはその直後に月の位相が指定の値になる日時
|
530
|
+
#
|
531
|
+
def phase(date, parameter=nil, precision=date.precision)
|
532
|
+
dates = _to_date_for_note(date)
|
533
|
+
note = dates.cal4note.l_phases
|
534
|
+
result = note.phase(date, parameter)
|
535
|
+
return result if dates.o_date.frame.kind_of?(When::CalendarTypes::Christian)
|
536
|
+
|
537
|
+
time = note.phase(date, parameter, When::SYSTEM)
|
538
|
+
cn = note.formula.time_to_cn(time) % 1
|
539
|
+
case cn
|
540
|
+
when 0..0.0001, 0.9999..1 # 朔
|
541
|
+
return result if result.cal_date[-1] == 1
|
542
|
+
diff = result.cal_date[-1] < 15 ? -1 : +1
|
543
|
+
when 0.2..0.8 # 弦、望
|
544
|
+
return result unless note.formula.kind_of?(When::Ephemeris::ChineseTrueLunation)
|
545
|
+
return result if time.clk_time.universal_time >= When::TM::Duration::DAY/4 # 午前6時以降
|
546
|
+
diff = -1
|
547
|
+
else # その他
|
548
|
+
return result
|
549
|
+
end
|
550
|
+
|
551
|
+
patched = result + When::P1D * diff
|
552
|
+
result.cal_date[0..-2] = patched.cal_date[0..-2]
|
553
|
+
result.cal_date[-1] = When::Coordinates::Pair.new(patched.cal_date[-1], -diff)
|
554
|
+
result
|
555
|
+
end
|
556
|
+
|
557
|
+
private
|
558
|
+
|
559
|
+
# オブジェクトの正規化
|
560
|
+
def _normalize(args=[], options={})
|
561
|
+
@prime ||= [%w(干支), %w(月名), %w(七曜 干支 六曜 廿四節気 祝祭日)]
|
562
|
+
super
|
563
|
+
end
|
564
|
+
|
565
|
+
# 年の暦注
|
566
|
+
def year_notes(dates, notes, conditions={})
|
567
|
+
_note_values(dates, notes, _all_keys[-3], _elements[-3]) do |dates, focused_notes, notes_hash|
|
568
|
+
|
569
|
+
focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-3]
|
570
|
+
root = When.Resource('_co:Common')
|
571
|
+
|
572
|
+
# 干支
|
573
|
+
residue = (dates.precision < When::DAY ? dates.o_date : dates.s_date).most_significant_coordinate - 4
|
574
|
+
notes_hash['干支'] = root['干支'][residue % 60]
|
575
|
+
notes_hash['干'] = root['干' ][residue % 10]
|
576
|
+
notes_hash['支'] = root['支' ][residue % 12]
|
577
|
+
|
578
|
+
# 廿八宿
|
579
|
+
notes_hash['廿八宿'] ||= root['宿'][(residue+18) % 28]
|
580
|
+
|
581
|
+
# 九星
|
582
|
+
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.year(residue)]
|
583
|
+
|
584
|
+
# 大小
|
585
|
+
unless notes_hash['大小']
|
586
|
+
year = dates.o_date.floor(When::YEAR)
|
587
|
+
month = year.floor(When::MONTH)
|
588
|
+
pattern = ''
|
589
|
+
while year == month
|
590
|
+
length = month.length(When::MONTH)
|
591
|
+
length = -length if dates.o_date.frame.kind_of?(When::CalendarTypes::Christian) # 太陽暦
|
592
|
+
pattern += '閏' if month[When::MONTH] * 0 == 1
|
593
|
+
pattern += MonthPattern[length] || '改'
|
594
|
+
month += When::P1M
|
595
|
+
end
|
596
|
+
notes_hash['大小'] = "#{pattern}(#{year.length(When::YEAR)})"
|
597
|
+
end
|
598
|
+
|
599
|
+
# その他
|
600
|
+
[notes_hash['干支'], notes_hash['干'], notes_hash['支']].each do |note|
|
601
|
+
note._year_notes(notes_hash, dates, conditions)
|
602
|
+
end
|
603
|
+
notes_hash
|
604
|
+
end
|
605
|
+
end
|
606
|
+
|
607
|
+
# 月の暦注
|
608
|
+
def month_notes(dates, notes, conditions={})
|
609
|
+
_note_values(dates, notes, _all_keys[-2], _elements[-2]) do |dates, focused_notes, notes_hash|
|
610
|
+
|
611
|
+
focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-2]
|
612
|
+
root = When.Resource('_co:Common')
|
613
|
+
|
614
|
+
# 干支
|
615
|
+
residue = month_stem_branch(dates.precision < When::DAY ? dates.o_date : dates.m_date)
|
616
|
+
notes_hash['干支'] = root['干支'][residue % 60]
|
617
|
+
notes_hash['干'] = root['干' ][residue % 10]
|
618
|
+
notes_hash['支'] = root['支' ][residue % 12]
|
619
|
+
|
620
|
+
# 廿八宿
|
621
|
+
notes_hash['廿八宿'] ||= root['宿'][(residue+6) % 28]
|
622
|
+
|
623
|
+
# 九星
|
624
|
+
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.month(
|
625
|
+
month_stem_branch(dates.precision < When::DAY ? dates.o_date : dates.s_date))]
|
626
|
+
|
627
|
+
# 大小
|
628
|
+
unless notes_hash['大小']
|
629
|
+
length = dates.o_date.length(When::MONTH)
|
630
|
+
length = -length if dates.o_date.frame.kind_of?(When::CalendarTypes::Christian) # 太陽暦
|
631
|
+
notes_hash['大小'] = "#{dates.o_date[When::MONTH]*0==1 ? '閏' : ''}#{MonthPattern[length] || '改'}(#{length.abs})"
|
632
|
+
end
|
633
|
+
|
634
|
+
# その他
|
635
|
+
[notes_hash['干支'], notes_hash['干'], notes_hash['支'], JapaneseLuniSolarNote].each do |note|
|
636
|
+
note._month_notes(notes_hash, dates, conditions)
|
637
|
+
end
|
638
|
+
notes_hash
|
639
|
+
end
|
640
|
+
end
|
641
|
+
|
642
|
+
# 日の暦注
|
643
|
+
def day_notes(dates, notes, conditions={})
|
644
|
+
_note_values(dates, notes, _all_keys[-1], _elements[-1]) do |dates, focused_notes, notes_hash|
|
645
|
+
|
646
|
+
focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-1]
|
647
|
+
root = When.Resource('_co:Common')
|
648
|
+
|
649
|
+
# 干支
|
650
|
+
residue = dates.s_date.to_i-11
|
651
|
+
notes_hash['干支'] = root['干支'][residue % 60]
|
652
|
+
notes_hash['干'] = root['干' ][residue % 10]
|
653
|
+
notes_hash['支'] = root['支' ][residue % 12]
|
654
|
+
|
655
|
+
# その他
|
656
|
+
[SolarTerms, LunarPhases, notes_hash['干支'], notes_hash['干'], notes_hash['支'],
|
657
|
+
JapaneseLuniSolarNote, JapaneseSolarNote].each do |note|
|
658
|
+
note._day_notes(notes_hash, dates, conditions)
|
659
|
+
end
|
660
|
+
|
661
|
+
# 七曜
|
662
|
+
notes_hash['七曜'] ||= root['Week'][dates.s_date.to_i % 7]
|
663
|
+
|
664
|
+
# 廿七宿
|
665
|
+
notes_hash['廿七宿'] = _residue27(notes_hash['廿七宿'], root)
|
666
|
+
|
667
|
+
# 廿八宿 / 鬼宿
|
668
|
+
notes_hash['廿八宿'] ||= root['宿'][(dates.s_date.to_i+11) % 28]
|
669
|
+
notes_hash['鬼宿'] ||= /鬼/ =~ notes_hash['廿八宿'].to_s ? '鬼宿' : nil
|
670
|
+
|
671
|
+
# 九星
|
672
|
+
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.day(dates.s_date, dates.cal4note.s_terms)]
|
673
|
+
|
674
|
+
notes_hash
|
675
|
+
end
|
676
|
+
end
|
677
|
+
|
678
|
+
#
|
679
|
+
# 日本暦日情報オブジェクトの生成
|
680
|
+
#
|
681
|
+
# @note 対となる太陽暦のある太陰太陽暦はそのまま(太陰太陽暦,太陽暦)の対
|
682
|
+
# そうでなければ、採用する対を年代により選択する
|
683
|
+
#
|
684
|
+
def _to_date_for_note(date)
|
685
|
+
if date.frame.kind_of?(When::CalendarTypes::ChineseLuniSolar)
|
686
|
+
return Dates.new(date) if date.frame.twin
|
687
|
+
o_date = date
|
688
|
+
else
|
689
|
+
o_date = self.class._to_japanese_date(date)
|
690
|
+
return nil unless o_date
|
691
|
+
end
|
692
|
+
year = o_date.most_significant_coordinate
|
693
|
+
NoteTypes.each do |line|
|
694
|
+
return Dates.new(o_date, year, date.precision, line[1]) if year >= line[0]
|
695
|
+
end
|
696
|
+
nil
|
697
|
+
end
|
698
|
+
|
699
|
+
#
|
700
|
+
# 任意の暦を日本年号付暦日に変換
|
701
|
+
#
|
702
|
+
def self._to_japanese_date(date)
|
703
|
+
return date if date._attr[:query] && date._attr[:query]['area'].to_s =~ /日本/
|
704
|
+
(date^ When.era(:area=>'日本')).each do |list|
|
705
|
+
return list[0] if list[0]
|
706
|
+
end
|
707
|
+
nil
|
708
|
+
end
|
709
|
+
|
710
|
+
#
|
711
|
+
# 廿七宿を Resudue 化
|
712
|
+
#
|
713
|
+
def _residue27(index, root)
|
714
|
+
return index unless index.kind_of?(Integer)
|
715
|
+
root['宿'][index]
|
716
|
+
end
|
717
|
+
|
718
|
+
#
|
719
|
+
# 月の干支
|
720
|
+
#
|
721
|
+
def month_stem_branch(date)
|
722
|
+
date.most_significant_coordinate*12+(date.cal_date[1] * 1) +
|
723
|
+
(date.frame.kind_of?(When::CalendarTypes::Christian) ? 12 : 13)
|
724
|
+
end
|
725
|
+
end
|
726
|
+
|
727
|
+
#
|
728
|
+
# 太陽暦の暦注・祝祭日
|
729
|
+
#
|
730
|
+
class JapaneseSolarNote < self
|
731
|
+
|
732
|
+
#
|
733
|
+
# 祝祭日一覧
|
734
|
+
#
|
735
|
+
NotesList = {
|
736
|
+
[ 1, 1] => [[1868..1872, '元旦'], [1874..1948, '四方拝'], [1949..2100, '元日']],
|
737
|
+
[ 1, 3] => [[1874..1948, '元始祭']],
|
738
|
+
[ 1, 5] => [[1874..1948, '新年宴会']],
|
739
|
+
[ 1,-2] => [[2000..2100, '成人の日']],
|
740
|
+
[ 1,15] => [[1868..1872, '小正月'], [1949..1999, '成人の日']],
|
741
|
+
[ 1,29] => [[1873..1873, '神武天皇即位日']],
|
742
|
+
[ 1,30] => [[1874..1912, '孝明天皇祭']],
|
743
|
+
[ 2,11] => [[1874..1948, '紀元節'], [1967..2100, '建国記念の日']],
|
744
|
+
[ 2,24] => [[1989..1989, '昭和天皇の大喪の礼']],
|
745
|
+
[ 3, 3] => [[1868..1872, '弥生節句']],
|
746
|
+
[ 3, 0] => [[1879..1948, '春季皇霊祭'], [1949..2100, '春分の日']],
|
747
|
+
[ 4, 3] => [[1874..1948, '神武天皇祭']],
|
748
|
+
[ 4,10] => [[1959..1959, '皇太子明仁親王の結婚の儀']],
|
749
|
+
[ 4,29] => [[1927..1948, '天長節'], [1949..1988, '天皇誕生日'], [1989..2006, 'みどりの日'], [2007..2100, '昭和の日']],
|
750
|
+
[ 5, 3] => [[1949..2100, '憲法記念日']],
|
751
|
+
[ 5, 4] => [[2007..2100, 'みどりの日']],
|
752
|
+
[ 5, 5] => [[1868..1872, '端午節句'], [1949..2100, 'こどもの日']],
|
753
|
+
[ 6, 9] => [[1993..1993, '皇太子徳仁親王の結婚の儀']],
|
754
|
+
[ 7, 7] => [[1868..1872, '七夕節句']],
|
755
|
+
[ 7,15] => [[1868..1872, 'お盆']],
|
756
|
+
[ 7,20] => [[1996..2002, '海の日']],
|
757
|
+
[ 7,-3] => [[2003..2100, '海の日']],
|
758
|
+
[ 7,30] => [[1913..1926, '明治天皇祭']],
|
759
|
+
[ 8, 1] => [[1868..1872, '田実節句']],
|
760
|
+
[ 8,11] => [[2016..2100, '山の日']],
|
761
|
+
[ 8,31] => [[1913..1926, '天長節']],
|
762
|
+
[ 9, 9] => [[1868..1872, '重陽節句']],
|
763
|
+
[ 9,15] => [[1966..2002, '敬老の日']],
|
764
|
+
[ 9,-3] => [[2003..2100, '敬老の日']],
|
765
|
+
[ 9,17] => [[1874..1878, '神嘗祭']],
|
766
|
+
[ 9, 0] => [[1878..1947, '秋季皇霊祭'], [1948..2100, '秋分の日']],
|
767
|
+
[10,10] => [[1966..1999, '体育の日']],
|
768
|
+
[10,-2] => [[2000..2100, '体育の日']],
|
769
|
+
[10,17] => [[1879..1947, '神嘗祭']],
|
770
|
+
[10,31] => [[1913..1926, '天長節祝日']],
|
771
|
+
[11, 3] => [[1873..1911, '天長節'], [1927..1947, '明治節'], [1948..2100, '文化の日']],
|
772
|
+
[11,10] => [[1915..1915, '即位の礼'], [1928..1928, '即位の礼']],
|
773
|
+
[11,12] => [[1990..1990, '即位の礼正殿の儀']],
|
774
|
+
[11,14] => [[1915..1915, '大嘗祭'], [1928..1928, '大嘗祭']],
|
775
|
+
[11,16] => [[1915..1915, '大饗第1日'], [1928..1928, '大饗第1日']],
|
776
|
+
[11,23] => [[1873..1947, '新嘗祭'], [1948..2100, '勤労感謝の日']],
|
777
|
+
[12,23] => [[1989..2100, '天皇誕生日']],
|
778
|
+
[12,25] => [[1927..1947, '大正天皇祭']]
|
779
|
+
}
|
780
|
+
|
781
|
+
# @private
|
782
|
+
Long = {3=>0, 9=>180}
|
783
|
+
|
784
|
+
class << self
|
785
|
+
|
786
|
+
# 日の暦注 - 祝祭日の計算
|
787
|
+
# @private
|
788
|
+
def _day_notes(notes, dates, conditions={})
|
789
|
+
# 明治維新以降の実暦日のみ扱う
|
790
|
+
return notes if dates.o_date.frame.kind_of?(When::CalendarTypes::ChineseLuniSolar)
|
791
|
+
year = dates.o_date.most_significant_coordinate
|
792
|
+
return notes unless year >= 1868
|
793
|
+
|
794
|
+
# 春分の日と秋分の日を祝祭日に加える
|
795
|
+
long = Long[dates.o_date.cal_date[1]] if year >= 1878
|
796
|
+
if long
|
797
|
+
date = When.when?(dates.o_date.to_cal_date.to_s,
|
798
|
+
{:frame=>dates.o_date.frame,
|
799
|
+
:clock=>dates.s_date.frame.time_basis})
|
800
|
+
term = dates.cal4note.s_terms.term(date.floor(When::MONTH,
|
801
|
+
When::DAY), [long,360]).cal_date[1..2]
|
802
|
+
list = NotesList.dup
|
803
|
+
list[term] = list[[term[0],0]]
|
804
|
+
else
|
805
|
+
list = NotesList
|
806
|
+
end
|
807
|
+
|
808
|
+
# 「国民の休日」制定以前
|
809
|
+
notes['祝祭日'] ||= _holiday(list, dates.o_date, '振替休日')
|
810
|
+
return notes if notes['祝祭日'] || year < 1988
|
811
|
+
|
812
|
+
# 「国民の休日」制定以後
|
813
|
+
duration = When.Duration('P1D')
|
814
|
+
[duration, -duration].each do |d|
|
815
|
+
return notes unless _holiday(list, dates.o_date + d)
|
816
|
+
end
|
817
|
+
notes['祝祭日'] = '国民の休日'
|
818
|
+
return notes
|
819
|
+
end
|
820
|
+
|
821
|
+
private
|
822
|
+
|
823
|
+
# 振替休日とハッピーマンデーを考慮した祝祭日
|
824
|
+
def _holiday(list, date, alternate=nil)
|
825
|
+
y = date.most_significant_coordinate
|
826
|
+
m, d = date.cal_date[1..2]
|
827
|
+
|
828
|
+
# 「振替休日」制定以前
|
829
|
+
note = _note(list, y, m, d)
|
830
|
+
return note if note || y < 1973
|
831
|
+
|
832
|
+
# 「振替休日」制定以降
|
833
|
+
case date.to_i % 7
|
834
|
+
when 0 # 月曜
|
835
|
+
# 振替休日
|
836
|
+
note = _note(list, y, m, d-1)
|
837
|
+
return alternate if note
|
838
|
+
# ハッピーマンデー
|
839
|
+
note = _note(list, y, m, -((d-1)/7 + 1))
|
840
|
+
return note if note
|
841
|
+
when 1,2 # 火曜・水曜
|
842
|
+
# 振替休日
|
843
|
+
return alternate if y >= 2007 && m == 5 && d == 6
|
844
|
+
end
|
845
|
+
end
|
846
|
+
|
847
|
+
# 振替休日とハッピーマンデーを考慮しない祝祭日
|
848
|
+
def _note(list, year, month, day)
|
849
|
+
return nil if day == 0
|
850
|
+
year = [year, 2100].min
|
851
|
+
note = list[[month,day]]
|
852
|
+
return nil unless note
|
853
|
+
note.each do |range|
|
854
|
+
return range[1] if range[0].include?(year)
|
855
|
+
end
|
856
|
+
return nil
|
857
|
+
end
|
858
|
+
end
|
859
|
+
end
|
860
|
+
|
861
|
+
#
|
862
|
+
# 太陰太陽暦の暦注
|
863
|
+
#
|
864
|
+
class JapaneseLuniSolarNote < self
|
865
|
+
|
866
|
+
# 変換表 月日→27宿
|
867
|
+
StarMansions = [ # 正 2 3 4 5 6 7 8 9 10 11 12
|
868
|
+
[11, 13, 15, 17, 19, 21, 24, 0, 2, 4, 7, 9], # 0 : 本月本説 室12奎14胃16畢18參20鬼22張25角00氐02心04斗07虛10
|
869
|
+
[ 5, 3, 1, 25, 23, 21, 19, 16, 14, 11, 8, 7], # 1 : 本月異説 尾05房03亢01翼26星24鬼22參20昴17婁15室12女09斗07
|
870
|
+
[14, 16, 18, 20, 22, 24, 0, 3, 5, 7, 10, 12], # 2 : 閏月本説 婁15昴17觜19井21柳23張25角00房03尾05斗07危11壁13
|
871
|
+
[12, 14, 16, 18, 19, 21, 24, 0, 2, 5, 8, 10], # 3 : 閏月異説 壁13婁15昴17觜19參20鬼22張25角00氐02尾05女09危11
|
872
|
+
[14, 16, 18, 23, 22, 24, 0, 3, 5, 7, 8, 12] # 4 : 閏月本説(元) (星24) (女09)
|
873
|
+
]
|
874
|
+
|
875
|
+
# 変換表 27宿→28宿
|
876
|
+
StarMansionIndex = (0..7).to_a + (9..27).to_a
|
877
|
+
|
878
|
+
# 七曜と27宿で決まる暦注
|
879
|
+
WeekDepended = {
|
880
|
+
# 日 月 火 水 木 金 土
|
881
|
+
'甘露' => [26, 17, 5, 22, 21, 3, 23], # 軫27 畢18 尾05 柳23 鬼22 房03 星24
|
882
|
+
'金剛峯' => [ 5, 8, 12, 16, 20, 24, 1], # 尾05 女09 壁13 昴17 井21 張25 亢01
|
883
|
+
'羅刹' => [15, 21, 25, 19, 2, 13, 22] # 胃16 鬼22 翼26 参20 氐02 奎14 柳23
|
884
|
+
}
|
885
|
+
|
886
|
+
# 人神配当
|
887
|
+
HumanBody = %w(足大指 外踝 股内 腰 口 手 内踝 腕 尻 腰背
|
888
|
+
鼻柱 髪際 牙歯 胃管 遍身 胸 気街 股内 足 踝
|
889
|
+
足小指 足踝及胸、目下 肝及足 手陽明 足陽明 胸 膝 陰 膝晊 足跌)
|
890
|
+
|
891
|
+
# 月の暦注
|
892
|
+
# @private
|
893
|
+
def self._month_notes(notes, dates, conditions={})
|
894
|
+
# 月名
|
895
|
+
notes['月名'] ||= dates.o_date.name('month')
|
896
|
+
end
|
897
|
+
|
898
|
+
# 日の暦注
|
899
|
+
# @private
|
900
|
+
def self._day_notes(notes, dates, conditions={})
|
901
|
+
|
902
|
+
# 廿七宿
|
903
|
+
m, l = [1,0].map {|f| dates.m_date.cal_date[1] * f}
|
904
|
+
d = (StarMansions[l==1 ? (conditions[:i27]||0) :
|
905
|
+
(conditions[:n27]||0)][m-1] + dates.m_date.cal_date[2] - 1) % 27
|
906
|
+
notes['廿七宿'] ||= StarMansionIndex[d]
|
907
|
+
|
908
|
+
# 甘露 / 金剛峯 / 羅刹
|
909
|
+
w = (dates.m_date.to_i + 1) % 7
|
910
|
+
['甘露', '金剛峯', '羅刹'].each do |c|
|
911
|
+
notes[c] = c if d == WeekDepended[c][w]
|
912
|
+
end
|
913
|
+
|
914
|
+
# 三寶吉・神吉・雑事吉
|
915
|
+
notes['神吉'] = notes['雑事吉'] = notes['三寶吉'] = nil if notes['没' ] || notes['滅' ]
|
916
|
+
notes['神吉'] = notes['雑事吉'] = nil if notes['日食'] || notes['月食'] || notes['往亡']
|
917
|
+
notes['三寶吉'] = nil if !notes['甘露'] && (notes['羅刹'] || notes['日食'] || notes['月食'])
|
918
|
+
notes['三寶吉'] = notes['甘露'] ? '三寶吉' : nil if /\+/ =~ notes['三寶吉'].to_s
|
919
|
+
notes['三寶吉'] = '三吉' if notes['三寶吉'] && dates.range >= 8 # 鎌倉以降
|
920
|
+
|
921
|
+
# 除手足甲 & 道虚・人神配当
|
922
|
+
y,m0,d0 = dates.m_date.cal_date
|
923
|
+
misoka = m0 != (dates.m_date + When.Duration('P1D')).cal_date[1] if d0 == 29
|
924
|
+
notes['除手足甲'] = '除手足甲' if ([6,16,30].include?(d0) || misoka) && !(conditions[:kana] || notes['没'] || notes['滅'] || notes['凶会'])
|
925
|
+
notes['道虚'] = '道虚' if d0 % 6 == 0 || misoka
|
926
|
+
notes['人神配当'] = HumanBody[d0-1]
|
927
|
+
|
928
|
+
# 仮名暦
|
929
|
+
notes['赤舌' ] ||= d0 == (m * 5 - 3) % 6 + 1 ? '赤舌' : nil
|
930
|
+
notes['大赤' ] ||= d0 % 8 == (m * 7 - 3) % 8 ? '大赤' : nil
|
931
|
+
notes['不成就'] ||= d0 % 8 == [6,3,2,1,4,5][m % 6] || (misoka && m % 6 == 0) ? '不成就' : nil # 『現代こよみ読み解き事典』 for 不成就日
|
932
|
+
notes['六曜' ] ||= When::RokuyoWeek.rokuyo_value(m, d0)
|
933
|
+
notes
|
934
|
+
end
|
935
|
+
end
|
936
|
+
|
937
|
+
#
|
938
|
+
# 月の位相による暦注
|
939
|
+
#
|
940
|
+
class Japanese::LunarPhases < LunarPhases
|
941
|
+
|
942
|
+
# 日の暦注
|
943
|
+
# @private
|
944
|
+
def self._day_notes(notes, dates, conditions={})
|
945
|
+
date = When.when?(dates.o_date.to_cal_date.to_s,
|
946
|
+
{:frame=>dates.o_date.frame,
|
947
|
+
:clock=>dates.l_date.frame.time_basis})
|
948
|
+
phase, metsu = dates.cal4note.l_phases.position(date)
|
949
|
+
|
950
|
+
# 滅
|
951
|
+
notes['滅'] = metsu == 2 && dates.range < 11 ? '滅' : nil
|
952
|
+
|
953
|
+
# 月相
|
954
|
+
unless notes['月相']
|
955
|
+
# イベントの判定
|
956
|
+
formula = dates.cal4note.l_phases.formula
|
957
|
+
clock = formula.kind_of?(When::Ephemeris::ChineseTrueLunation) &&
|
958
|
+
(5..25).include?(dates.l_date.cal_date[2]) ?
|
959
|
+
When.Clock(-21600) : # 唐代暦法の望弦は午前6時を日の境界とする
|
960
|
+
dates.l_date.frame._time_basis[-1] # その他(進朔も考慮した時刻)
|
961
|
+
odate = When.when?(dates.o_date.to_cal_date.to_s, {:frame=>dates.o_date.frame, :clock=>clock})
|
962
|
+
phases = formula.phase_range(odate)
|
963
|
+
thitis = phases.map {|phase| (phase % 1) * 30.0}
|
964
|
+
note = if thitis[0] >= thitis[1]
|
965
|
+
dates.o_date.frame.kind_of?(When::CalendarTypes::Christian) || conditions[:shoyo] ? '朔' : nil
|
966
|
+
else
|
967
|
+
range = thitis[0]...thitis[1]
|
968
|
+
range.include?( 7.5) ? '上弦' :
|
969
|
+
range.include?(15.0) ? '望' :
|
970
|
+
range.include?(22.5) ? '下弦' : nil
|
971
|
+
end
|
972
|
+
|
973
|
+
# 結果の反映
|
974
|
+
if conditions[:shoyo]
|
975
|
+
# :shoyo が true ならイベント時刻も返す
|
976
|
+
notes['月相'] = if note
|
977
|
+
etime = formula._to_seed_type(formula.cn_to_time((phases[1] * 4).floor / 4.0), odate)
|
978
|
+
if formula.respond_to?(:lunation_length) && formula.lunation_length.kind_of?(Rational)
|
979
|
+
shoyo = etime.clk_time.universal_time
|
980
|
+
shoyo += When::TM::Duration::DAY if (0...clock.universal_time).include?(shoyo)
|
981
|
+
shoyo = (shoyo / When::TM::Duration::DAY * formula.denominator * 1000 + 0.5).floor / 1000.0
|
982
|
+
shoyo = shoyo.to_i if shoyo == shoyo.to_i
|
983
|
+
"#{note}(#{shoyo}/#{formula.denominator})"
|
984
|
+
else
|
985
|
+
etime.events = [note]
|
986
|
+
etime
|
987
|
+
end
|
988
|
+
else
|
989
|
+
nil
|
990
|
+
end
|
991
|
+
else
|
992
|
+
# :shoyo が false ならイベン名のみ返す
|
993
|
+
notes['月相'] = note
|
994
|
+
end
|
995
|
+
end
|
996
|
+
|
997
|
+
# 月食
|
998
|
+
notes['月食'] = nil # 計算できないので、偽としておく
|
999
|
+
notes
|
1000
|
+
end
|
1001
|
+
end
|
1002
|
+
|
1003
|
+
#
|
1004
|
+
# 太陽黄経による暦注
|
1005
|
+
#
|
1006
|
+
class Japanese::SolarTerms < SolarTerms
|
1007
|
+
|
1008
|
+
Notes12 = %w(正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月)
|
1009
|
+
|
1010
|
+
Notes10 = [
|
1011
|
+
%w(初伏 初伏),
|
1012
|
+
%w(仲伏 中伏),
|
1013
|
+
%w(後伏 末伏)]
|
1014
|
+
|
1015
|
+
Notes60_A = [
|
1016
|
+
# +0
|
1017
|
+
'侯小過外', # 315 : 正月
|
1018
|
+
'侯需外', # 345 : 二月
|
1019
|
+
'侯豫外', # 15 : 三月
|
1020
|
+
'侯旅外', # 45 : 四月
|
1021
|
+
'侯大有外', # 75 : 五月
|
1022
|
+
'侯鼎外', # 105 : 六月
|
1023
|
+
'侯恆外', # 135 : 七月
|
1024
|
+
'侯巽外', # 165 : 八月
|
1025
|
+
'侯歸妹外', # 195 : 九月
|
1026
|
+
'侯艮外', # 225 : 十月
|
1027
|
+
'侯未濟外', # 255 : 十一月
|
1028
|
+
'侯屯外' # 285 : 十二月
|
1029
|
+
]
|
1030
|
+
|
1031
|
+
Notes60_B = [
|
1032
|
+
# +3 +9 +15 +21 +27
|
1033
|
+
'大夫蒙', '卿益', '公漸', '辟泰', '侯需内', # 315 : 正月
|
1034
|
+
'大夫随', '卿晋', '公解', '辟大壯', '侯豫内', # 345 : 二月
|
1035
|
+
'大夫訟', '卿蠱', '公革', '辟夬', '侯旅内', # 15 : 三月
|
1036
|
+
'大夫師', '卿比', '公小畜', '辟乾', '侯大有内', # 45 : 四月
|
1037
|
+
'大夫家人', '卿井', '公咸', '辟姤', '侯鼎内', # 75 : 五月
|
1038
|
+
'大夫豊', '卿渙', '公履', '辟遯', '侯恆内', # 105 : 六月
|
1039
|
+
'大夫節', '卿同人', '公損', '辟否', '侯巽内', # 135 : 七月
|
1040
|
+
'大夫萃', '卿大畜', '公賁', '辟観', '侯歸妹内', # 165 : 八月
|
1041
|
+
'大夫無妄', '卿明夷', '公困', '辟剥', '侯艮内', # 195 : 九月
|
1042
|
+
'大夫既濟', '卿噬嗑', '公大過', '辟坤', '侯未濟内', # 225 : 十月
|
1043
|
+
'大不蹇', '卿頤', '公中孚', '辟復', '侯屯内', # 255 : 十一月
|
1044
|
+
'大夫謙', '卿睽', '公升', '辟臨', '侯小過内' # 285 : 十二月
|
1045
|
+
]
|
1046
|
+
|
1047
|
+
Notes72 = [
|
1048
|
+
# 儀鳳暦 宣明暦(中国) 宣明暦 貞享暦 宝暦暦・寛政暦 略本暦
|
1049
|
+
# 315 : 正月
|
1050
|
+
%w(雞始乳 東風解凍 東風解凍 東風解凍 東風解凍 東風解凍),
|
1051
|
+
%w(東風解凍 蟄始振 蟄虫始振 梅花乃芳 黄鶯睍睆 黄鶯睍睆),
|
1052
|
+
%w(蟄蟲始振 魚上氷 魚上氷 魚上氷 魚上氷 魚上氷),
|
1053
|
+
%w(魚上冰 獺祭魚 獺祭魚 土脈潤起 土脈潤起 土脉潤起),
|
1054
|
+
%w(獺祭魚 鴻雁来 鴻雁来 霞彩碧空 霞始靆 霞始靆),
|
1055
|
+
%w(鴻雁來 草木萌動 草木萌動 草木萌動 草木萌動 草木萌動),
|
1056
|
+
|
1057
|
+
# 345 : 二月
|
1058
|
+
%w(始雨水 桃始華 桃始華 蟄虫啓戸 蟄虫啓戸 蟄虫啓戸),
|
1059
|
+
%w(桃始花 倉庚鳴 倉庚鳴 寒雨間熟 桃始笑 桃始笑),
|
1060
|
+
%w(倉庚鳴 鷹化爲鳩 鷹化爲鳩 菜虫化蝶 菜虫化蝶 菜虫化蝶),
|
1061
|
+
%w(鷹化爲鳩 玄鳥至 玄鳥至 雀始巣 雀始巣 雀始巣),
|
1062
|
+
%w(玄鳥至 雷乃發聲 雷乃發聲 雷乃発声 桜始開 桜始開),
|
1063
|
+
%w(雷始發聲 始電 始電 桜始開桃始笑 雷乃発声 雷乃発声),
|
1064
|
+
|
1065
|
+
# 15 : 三月
|
1066
|
+
%w(始雷 桐始華 桐始華 玄鳥至 玄鳥至 玄鳥至),
|
1067
|
+
%w(蟄蟲咸動 田鼠化爲鴑 田鼠化爲鴑 鴻雁北 鴻雁北 鴻雁北),
|
1068
|
+
%w(蟄蟲啓戸 虹始見 虹始見 虹始見 虹始見 虹始見),
|
1069
|
+
%w(桐始華 萍始生 萍始生 葭始生 葭始生 葭始生),
|
1070
|
+
%w(田鼠化爲鴑 鳴鳩拂其羽 鳴鳩拂其羽 牡丹華 霜止出苗 霜止出苗),
|
1071
|
+
%w(虹始見 戴勝降于桑 戴勝降于桑 霜止出苗 牡丹華 牡丹華),
|
1072
|
+
|
1073
|
+
# 45 : 四月
|
1074
|
+
%w(萍始生 螻蟈鳴 螻蟈鳴 鵑始鳴 鼃始鳴 鼃始鳴),
|
1075
|
+
%w(戴勝降于桑 蚯蚓出 蚯蚓出 蚯蚓出 蚯蚓出 蚯蚓出),
|
1076
|
+
%w(螻蟈鳴 王瓜生 王瓜生 竹笋生 竹笋生 竹笋生),
|
1077
|
+
%w(蚯蚓出 苦菜秀 苦菜秀 蚕起食桑 蚕起食桑 蚕起食桑),
|
1078
|
+
%w(王瓜生 靡草死 靡草死 紅花栄 紅花栄 紅花栄),
|
1079
|
+
%w(苦菜秀 小暑至 小暑至 麦秋至 麦秋至 麦秋至),
|
1080
|
+
|
1081
|
+
# 75 : 五月
|
1082
|
+
%w(靡草死 螳蜋生 螳蜋生 螳螂生 螳螂生 螳螂生),
|
1083
|
+
%w(小暑至 鵙始鳴 鵙始鳴 腐草為螢 腐草為螢 腐草為螢),
|
1084
|
+
%w(螳螂生 反舌無聲 反舌無聲 梅始黄 梅子黄 梅子黄),
|
1085
|
+
%w(鵙始鳴 鹿角解 鹿角解 乃東枯 乃東枯 乃東枯),
|
1086
|
+
%w(反舌無聲 蜩始鳴 蜩始鳴 分龍雨 菖蒲華 菖蒲華),
|
1087
|
+
%w(鹿角解 半夏生 半夏生 半夏生 半夏生 半夏生),
|
1088
|
+
|
1089
|
+
# 105 : 六月
|
1090
|
+
%w(蟬始鳴 温風至 温風至 温風至 温風至 温風至),
|
1091
|
+
%w(半夏生 蟋蟀居壁 蟋蟀居壁 蓮始華 蓮始華 蓮始開),
|
1092
|
+
%w(木槿榮 鷹乃學習 鷹乃學習 鷹乃学習 鷹乃学習 鷹乃学習),
|
1093
|
+
%w(温風至 腐草爲螢 腐草爲螢 桐始結花 桐始結花 桐始結花),
|
1094
|
+
%w(蟋蟀居壁 土潤溽暑 土潤溽暑 土潤溽暑 土潤溽暑 土潤溽暑),
|
1095
|
+
%w(鷹乃學習 大雨時行 大雨時行 大雨時行 大雨時行 大雨時行),
|
1096
|
+
|
1097
|
+
# 135 : 七月
|
1098
|
+
%w(腐草爲螢 涼風至 涼風至 涼風至 涼風至 涼風至),
|
1099
|
+
%w(土潤溽暑 白露降 白露降 山沢浮雲 寒蝉鳴 寒蝉鳴),
|
1100
|
+
%w(涼風至 寒蟬鳴 寒蟬鳴 霧色已成 蒙霧升降 蒙霧升降),
|
1101
|
+
%w(白露降 鷹乃祭鳥 鷹乃祭鳥 寒蝉鳴 綿柎開 綿柎開),
|
1102
|
+
%w(寒蟬鳴 天地始肅 天地始肅 天地始粛 天地始粛 天地始粛),
|
1103
|
+
%w(鷹祭鳥 禾乃登 禾乃登 禾乃登 禾乃登 禾乃登),
|
1104
|
+
|
1105
|
+
# 165 : 八月
|
1106
|
+
%w(天地始肅 鴻雁来 鴻雁来 草露白 草露白 草露白),
|
1107
|
+
%w(暴風至 玄鳥歸 玄鳥歸 鶺鴒鳴 鶺鴒鳴 鶺鴒鳴),
|
1108
|
+
%w(鴻雁來 群鳥養羞 群鳥養羞 玄鳥去 玄鳥去 玄鳥去),
|
1109
|
+
%w(玄鳥歸 雷乃收聲 雷乃收聲 鴻雁来 雷乃収声 雷乃収声),
|
1110
|
+
%w(羣鳥養羞 蟄蟲坏戸 蟄蟲坏戸 蟄虫坏戸 蟄虫坏戸 蟄虫坏戸),
|
1111
|
+
%w(雷始收聲 水始涸 水始涸 水始涸 水始涸 水始涸),
|
1112
|
+
|
1113
|
+
# 195 : 九月
|
1114
|
+
%w(蟄蟲坏戸 鴻雁來賓 鴻雁來賓 棗栗零 鴻雁来 鴻雁来),
|
1115
|
+
%w(陰氣方盛 雀入大水爲蛤 雀入大水爲蛤 蟋蟀在戸 菊花開 菊花開),
|
1116
|
+
%w(陽氣始衰 菊有黄花 菊有黄花 菊花開 蟋蟀在戸 蟋蟀在戸),
|
1117
|
+
%w(水始涸 豺乃祭獸 豺乃祭獸 霜始降 霜始降 霜始降),
|
1118
|
+
%w(鴻雁來賓 草木黄落 草木黄落 蔦楓紅葉 霎時施 霎時施),
|
1119
|
+
%w(雀入水爲蛤 蟄蟲咸俯 蟄蟲咸俯 鶯雛鳴 楓蔦黄 楓蔦黄),
|
1120
|
+
|
1121
|
+
# 225 : 十月
|
1122
|
+
%w(菊有黄花 水始冰 水始冰 山茶始開 山茶始開 山茶始開),
|
1123
|
+
%w(豺祭獣 地始凍 地始凍 地始凍 地始凍 地始凍),
|
1124
|
+
%w(水始冰 野雞入大水爲蜃 野雞入大水爲蜃 霎乃降 金盞香 金盞香),
|
1125
|
+
%w(地始凍 虹藏不見 虹藏不見 虹蔵不見 虹蔵不見 虹蔵不見),
|
1126
|
+
%w(野雞入水爲蜃 天氣上騰地氣下降 天氣上騰地氣下降 樹葉咸落 朔風払葉 朔風払葉),
|
1127
|
+
%w(虹藏不見 閉塞而成冬 閉塞而成冬 橘始黄 橘始黄 橘始黄),
|
1128
|
+
|
1129
|
+
# 255 : 十一月
|
1130
|
+
%w(冰益壯 鶡鳥不鳴 鶡鳥不鳴 閉塞成冬 閉塞成冬 閉塞成冬),
|
1131
|
+
%w(地始坼 虎始交 虎始交 熊蟄穴 熊蟄穴 熊蟄穴),
|
1132
|
+
%w(鶡鳥不鳴 茘挺生 茘挺生 水仙開 鱖魚群 鱖魚群),
|
1133
|
+
%w(虎始交 蚯蚓結 蚯蚓結 乃東生 乃東生 乃東生),
|
1134
|
+
%w(芒始生 麋角解 麋角解 麋角解 麋角解 麋角解),
|
1135
|
+
%w(茘挺生 水泉動 水泉動 雪下出麦 雪下出麦 雪下出麦),
|
1136
|
+
|
1137
|
+
# 285 : 十二月
|
1138
|
+
%w(蚯蚓結 雁北郷 雁北郷 芹乃栄 芹乃栄 芹乃栄),
|
1139
|
+
%w(麋角解 鵲始巣 鵲始巣 風気乃行 水泉動 水泉動),
|
1140
|
+
%w(水泉動 野雞始鴝 野雞始鴝 雉始雊 雉始雊 雉始雊),
|
1141
|
+
%w(雁北郷 雞始乳 雞始乳 款冬華 款冬華 款冬華),
|
1142
|
+
%w(鵲始巣 鷙鳥厲疾 鷙鳥厲疾 水沢腹堅 水沢腹堅 水沢腹堅),
|
1143
|
+
%w(雉始雊 水澤腹堅 水澤腹堅 鶏始乳 鶏始乳 鶏始乳)
|
1144
|
+
]
|
1145
|
+
|
1146
|
+
# 計算結果の修正
|
1147
|
+
# @private
|
1148
|
+
Patch = {
|
1149
|
+
2039054 => [149.0, 1], # 貞観12(0870).07.17 [149.0, 0] 没
|
1150
|
+
2039055 => [150.0, 0], # 貞観12(0870).07.18 [150.0, 1] 処暑
|
1151
|
+
|
1152
|
+
2107233 => [ 29.0, 1], # 天喜05(1057).03.10 [ 29.0, 0] 没
|
1153
|
+
2107234 => [ 30.0, 0], # 天喜05(1057).03.11 [ 30.0, 1] 穀雨
|
1154
|
+
|
1155
|
+
2160437 => [269.0, 0], # 建仁02(1202).10=29 [270.0, 1] 冬至
|
1156
|
+
2160438 => [270.0, 1], # 建仁02(1202).11.01 [271.0, 1]
|
1157
|
+
2160439 => [271.0, 1], # 建仁02(1202).11.02 [272.0, 1]
|
1158
|
+
2160440 => [272.0, 1], # 建仁02(1202).11.03 [272.0, 0] 没
|
1159
|
+
|
1160
|
+
2175412 => [269.0, 1], # 寛元01(1243).11.03 [269.0, 0] 没
|
1161
|
+
2175413 => [270.0, 0], # 寛元01(1243).11.04 [270.0, 1] 冬至
|
1162
|
+
|
1163
|
+
2189200 => [179.0, 0], # 弘安04(1281).07=30 [180.0, 1] 秋分
|
1164
|
+
2189201 => [180.0, 1], # 弘安04(1281).08.01 [181.0, 1]
|
1165
|
+
2189202 => [181.0, 1], # 弘安04(1281).08.02 [181.0, 0] 没
|
1166
|
+
|
1167
|
+
2243577 => [136.0, 0], # 永享02(1430).07.11 [136.0, 1] (立秋の翌日)
|
1168
|
+
2243578 => [136.0, 1], # 永享02(1430).07.12 [137.0, 1]
|
1169
|
+
2243579 => [137.0, 1], # 永享02(1430).07.13 [138.0, 1]
|
1170
|
+
2243580 => [138.0, 1], # 永享02(1430).07.14 [139.0, 1]
|
1171
|
+
2243581 => [139.0, 1], # 永享02(1430).07.15 [140.0, 1]
|
1172
|
+
2243582 => [140.0, 1], # 永享02(1430).07.16 [141.0, 1]
|
1173
|
+
2243583 => [141.0, 1], # 永享02(1430).07.17 [142.0, 1]
|
1174
|
+
2243584 => [142.0, 1], # 永享02(1430).07.18 [143.0, 1]
|
1175
|
+
2243585 => [143.0, 1], # 永享02(1430).07.19 [144.0, 1]
|
1176
|
+
2243586 => [144.0, 1], # 永享02(1430).07.20 [145.0, 1]
|
1177
|
+
2243587 => [145.0, 1], # 永享02(1430).07.21 [146.0, 1]
|
1178
|
+
2243588 => [146.0, 1], # 永享02(1430).07.22 [147.0, 1]
|
1179
|
+
2243589 => [147.0, 1], # 永享02(1430).07.23 [148.0, 1]
|
1180
|
+
2243590 => [148.0, 1], # 永享02(1430).07.24 [149.0, 1]
|
1181
|
+
2243591 => [149.0, 1], # 永享02(1430).07.25 [149.0, 0] 没 (処暑の前日)
|
1182
|
+
|
1183
|
+
2311770 => [ 29.0, 1], # 元和03(1617).03.18 [ 29.0, 0] 没
|
1184
|
+
2311771 => [ 30.0, 0], # 元和03(1617).03.19 [ 30.0, 1] 穀雨
|
1185
|
+
|
1186
|
+
2396062 => [314.0, 0], # 弘化04(1847).12.30 [315.0, 1] 立春 (計算誤差の補正)
|
1187
|
+
2396063 => [315.0, 1], # 弘化05(1848).01.01 [315.0, 0] 没
|
1188
|
+
|
1189
|
+
2397583 => [ 15.0, 1], # 嘉永05(1852).02=15 [ 14.0, 0] 没
|
1190
|
+
2397584 => [ 16.0, 0] # 嘉永05(1852).02=16 [ 15.0, 1] 清明 (計算誤差の補正)
|
1191
|
+
}
|
1192
|
+
|
1193
|
+
class << self
|
1194
|
+
# テスト用の属性
|
1195
|
+
attr_writer :patch
|
1196
|
+
private :patch=
|
1197
|
+
|
1198
|
+
# 日の暦注
|
1199
|
+
# @private
|
1200
|
+
def _day_notes(notes, dates, conditions={})
|
1201
|
+
date = When.when?(dates.o_date.to_cal_date.to_s,
|
1202
|
+
{:frame=>dates.o_date.frame,
|
1203
|
+
:clock=>dates.s_date.frame._time_basis[0]})
|
1204
|
+
patch = (@patch || Patch)[date.to_i] unless dates.o_date.frame.respond_to?(:twin) &&
|
1205
|
+
dates.o_date.frame.twin
|
1206
|
+
longitude, motsu = patch ? patch : dates.cal4note.s_terms.position(date)
|
1207
|
+
|
1208
|
+
# 三伏 - 庚
|
1209
|
+
#
|
1210
|
+
# 初 : 夏至から 20..29
|
1211
|
+
# 仲 : 夏至から 30..39
|
1212
|
+
# 後 : 立秋から 0..9
|
1213
|
+
if !notes['三伏'] && notes['干'].remainder == 6 # 庚
|
1214
|
+
index = dates.range >= 11 ? 1 : 0
|
1215
|
+
if 109 <= longitude && longitude <= 129 # 夏至から
|
1216
|
+
term = dates.cal4note.s_terms.term(date, [-270,360])
|
1217
|
+
diff = dates.s_date.to_i - term.to_i
|
1218
|
+
notes['三伏'] = Notes10[0][index] if 20 <= diff && diff <= 29
|
1219
|
+
notes['三伏'] = Notes10[1][index] if 30 <= diff && diff <= 39
|
1220
|
+
elsif longitude == 135 # 立秋
|
1221
|
+
notes['三伏'] = Notes10[2][index]
|
1222
|
+
elsif 136 <= longitude && longitude <= 144 # 立秋から
|
1223
|
+
term = dates.cal4note.s_terms.term(date, [-225,360])
|
1224
|
+
diff = dates.s_date.to_i - term.to_i
|
1225
|
+
notes['三伏'] = Notes10[2][index] if 0 < diff && diff <= 9
|
1226
|
+
end
|
1227
|
+
end
|
1228
|
+
|
1229
|
+
# 社 - 戊
|
1230
|
+
#
|
1231
|
+
# 春秋分から -5..4
|
1232
|
+
if !notes['社'] && notes['干'].remainder == 4 # 戊
|
1233
|
+
if (longitude + 5) % 180 < 10 # 春秋分の近傍
|
1234
|
+
term = dates.cal4note.s_terms.term(date - When.Duration('P5D'), [0,180])
|
1235
|
+
diff = dates.s_date.to_i - term.to_i
|
1236
|
+
notes['社'] = '社' if -5 <= diff && diff <= 4
|
1237
|
+
end
|
1238
|
+
end
|
1239
|
+
|
1240
|
+
# 臘 - 辰
|
1241
|
+
#
|
1242
|
+
# 大寒から -6..5
|
1243
|
+
if !notes['臘'] && notes['支'].remainder == 4 # 辰
|
1244
|
+
if (longitude - 339) % 360 < 12 # 大寒の近傍
|
1245
|
+
term = dates.cal4note.s_terms.term(date - When.Duration('P6D'), [345,360])
|
1246
|
+
diff = dates.s_date.to_i - term.to_i
|
1247
|
+
notes['臘'] = '臘' if -6 <= diff && diff <= 5
|
1248
|
+
end
|
1249
|
+
end
|
1250
|
+
|
1251
|
+
# 土用事
|
1252
|
+
unless notes['土用事']
|
1253
|
+
_longitude, _motsu = dates.cal4note.doyo ? dates.cal4note.s_terms.position(date, -dates.cal4note.doyo) :
|
1254
|
+
[longitude, motsu]
|
1255
|
+
if _motsu != 0 && _longitude % 90 == 27
|
1256
|
+
notes['土用事'] =
|
1257
|
+
begin
|
1258
|
+
event_name =
|
1259
|
+
case dates.range
|
1260
|
+
when 0 ; '土用' # 元嘉暦以前
|
1261
|
+
when 1 ; '土王' # 麟徳暦
|
1262
|
+
when 2..10 ; '土用事' # 大衍暦~宣明暦
|
1263
|
+
else ; '土用入' # 貞享暦以降
|
1264
|
+
end
|
1265
|
+
if conditions[:shoyo]
|
1266
|
+
dates.cal4note.s_terms.event_time(date, event_name, [27-(dates.cal4note.doyo||0), 90])
|
1267
|
+
else
|
1268
|
+
event_name
|
1269
|
+
end
|
1270
|
+
end
|
1271
|
+
end
|
1272
|
+
end
|
1273
|
+
|
1274
|
+
# 入梅 - 壬
|
1275
|
+
#
|
1276
|
+
# 貞享2(1685)~ 芒種から 1..10 日の壬の日
|
1277
|
+
# 元文5(1740)~ 芒種から 0..9 日の壬の日
|
1278
|
+
# 明治9(1876)~ 太陽黄経80度
|
1279
|
+
unless notes['入梅']
|
1280
|
+
if dates.year >= 1876
|
1281
|
+
notes['入梅'] = '入梅' if longitude == 80 && motsu == 1
|
1282
|
+
elsif notes['干'].remainder == 8 # 壬
|
1283
|
+
if (longitude - 75) % 360 <= 10 # 芒種の近傍
|
1284
|
+
term = dates.cal4note.s_terms.term(date - When.Duration('P11D'), [75,360])
|
1285
|
+
diff = dates.s_date.to_i - term.to_i
|
1286
|
+
diff += 1 if dates.year >= 1740
|
1287
|
+
notes['入梅'] = '入梅' if dates.range >= 11 && 1 <= diff && diff <= 10
|
1288
|
+
end
|
1289
|
+
end
|
1290
|
+
end
|
1291
|
+
|
1292
|
+
# 半夏生
|
1293
|
+
#
|
1294
|
+
# 太陽黄経100度
|
1295
|
+
notes['半夏生'] ||= '半夏生' if longitude == 100 && motsu == 1
|
1296
|
+
|
1297
|
+
# 立春を起算日とする雑節
|
1298
|
+
#
|
1299
|
+
unless notes['節分'] && notes['八十八夜'] && notes['二百十日'] && notes['二百廿日']
|
1300
|
+
term = dates.cal4note.s_terms.term(date + When.Duration('P3D'), [-45,360])
|
1301
|
+
case dates.s_date.to_i - term.to_i
|
1302
|
+
when -1 ; notes['節分'] ||= '節分'
|
1303
|
+
when 87 ; notes['八十八夜'] ||= '八十八夜'
|
1304
|
+
when 209 ; notes['二百十日'] ||= '二百十日'
|
1305
|
+
when 219 ; notes['二百廿日'] ||= '二百廿日'
|
1306
|
+
end
|
1307
|
+
end
|
1308
|
+
|
1309
|
+
# 日食
|
1310
|
+
notes['日食'] = nil # 計算できないので、偽としておく
|
1311
|
+
|
1312
|
+
# 没
|
1313
|
+
if motsu == 0
|
1314
|
+
notes['没'] = dates.range < 11 ? '没' : nil
|
1315
|
+
return notes unless patch
|
1316
|
+
else
|
1317
|
+
notes['没'] = nil
|
1318
|
+
end
|
1319
|
+
|
1320
|
+
# 廿四節気
|
1321
|
+
div, mod = longitude.divmod(15)
|
1322
|
+
if mod == 0
|
1323
|
+
note = (div - 21) % 24
|
1324
|
+
div, mod = note.divmod(2)
|
1325
|
+
notes['節中'] ||= Notes12[div] + %w(節 中)[mod]
|
1326
|
+
notes['廿四節気'] ||=
|
1327
|
+
begin
|
1328
|
+
residue = When.Resource(dates.range == 1 ? '_co:Common?V=0618' : '_co:Common')['二十四節気::*'][(note-3) % 24]
|
1329
|
+
if conditions[:shoyo]
|
1330
|
+
dates.cal4note.s_terms.event_time(date, residue.label, [0,15])
|
1331
|
+
else
|
1332
|
+
residue
|
1333
|
+
end
|
1334
|
+
end
|
1335
|
+
end
|
1336
|
+
|
1337
|
+
# 七十二候
|
1338
|
+
div, mod = longitude.divmod(5)
|
1339
|
+
notes['七十二候'] ||= mod == 0 ? Notes72[(div - 63) % 72][dates.index_s] : nil
|
1340
|
+
|
1341
|
+
# 往亡
|
1342
|
+
unless notes['往亡'] && notes['神吉']
|
1343
|
+
month = dates.s_date.cal_date[-2] - 1
|
1344
|
+
day = dates.s_date.cal_date[-1] - 1
|
1345
|
+
div, mod = month.divmod(3)
|
1346
|
+
deg = (div+7)*(mod+1) + month * 30 + 314
|
1347
|
+
notes['往亡'] = (dates.range < 11 ? (deg - longitude) % 360 == 0 : # 没を含まない
|
1348
|
+
(deg - 315 ) % 30 == day)? '往亡' : nil # 没を含む
|
1349
|
+
end
|
1350
|
+
|
1351
|
+
# 伏龍
|
1352
|
+
notes['伏龍'] ||= {
|
1353
|
+
315 => '庭内去堂', 15 => '門内百日', 115 => '東垣六十日',
|
1354
|
+
175 => '四隅百日', 275 => '竈内四十日'
|
1355
|
+
}[longitude]
|
1356
|
+
|
1357
|
+
# 六十卦
|
1358
|
+
div, mod = longitude.divmod(30)
|
1359
|
+
notes['六十卦'] ||= mod == 15 ? Notes60_A[(div - 10) % 12] : nil
|
1360
|
+
div, mod = longitude.divmod(6)
|
1361
|
+
notes['六十卦'] ||= mod == 0 ? Notes60_B[(div - 53) % 60] : nil
|
1362
|
+
|
1363
|
+
# 彼岸
|
1364
|
+
unless notes['彼岸']
|
1365
|
+
if dates.range < 11
|
1366
|
+
notes['彼岸'] = '彼岸' if longitude % 180 == 2 # 宣明暦以前(没を除いて3日後)
|
1367
|
+
else
|
1368
|
+
term = dates.cal4note.s_terms.term(date - When.Duration('P7D'), [0,180]) # 近傍の春秋分
|
1369
|
+
case dates.s_date.to_i - term.to_i
|
1370
|
+
when 2 ; notes['彼岸'] = '彼岸' if dates.range == 11 # 貞享暦(没を含めて3日後)
|
1371
|
+
when -5 ; notes['彼岸'] = '彼岸' if longitude > 180 && (1755...1844).include?(dates.year) # 宝暦暦・寛政暦(春-6日前))
|
1372
|
+
when -1 ; notes['彼岸'] = '彼岸' if longitude <= 180 && (1755...1844).include?(dates.year) # 宝暦暦・寛政暦(秋-2日前)
|
1373
|
+
when -3 ; notes['彼岸'] = '彼岸' if dates.year >= 1844 # 天保暦以降(秋-4日前)
|
1374
|
+
end
|
1375
|
+
end
|
1376
|
+
notes['彼岸'] = nil unless notes['彼岸'] == '彼岸'
|
1377
|
+
end
|
1378
|
+
|
1379
|
+
notes
|
1380
|
+
end
|
1381
|
+
end
|
1382
|
+
end
|
1383
|
+
end
|