when_exe 0.2.100 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE.ja.txt +25 -25
- data/LICENSE.txt +31 -31
- data/bin/irb.rc +5 -0
- data/bin/locales.rb +2 -2
- data/bin/when.rb +16 -0
- data/bin/when.rb.config +7 -0
- data/lib/when_exe.rb +616 -14
- data/lib/when_exe/basictypes.rb +615 -0
- data/lib/when_exe/calendartypes.rb +1700 -0
- data/lib/when_exe/coordinates.rb +1936 -0
- data/lib/when_exe/core/compatibility.rb +54 -0
- data/lib/when_exe/core/duration.rb +72 -72
- data/lib/when_exe/core/extension.rb +382 -0
- data/lib/when_exe/ephemeris.rb +1845 -0
- data/lib/when_exe/googlecalendar.rb +140 -0
- data/lib/when_exe/icalendar.rb +1587 -0
- data/lib/when_exe/inspect.rb +1237 -0
- data/lib/when_exe/locales/af.rb +90 -0
- data/lib/when_exe/locales/ar.rb +145 -0
- data/lib/when_exe/locales/az.rb +90 -0
- data/lib/when_exe/locales/bg.rb +90 -0
- data/lib/when_exe/locales/bn.rb +94 -0
- data/lib/when_exe/locales/bs.rb +121 -0
- data/lib/when_exe/locales/ca.rb +92 -0
- data/lib/when_exe/locales/cs.rb +107 -0
- data/lib/when_exe/locales/cy.rb +150 -0
- data/lib/when_exe/locales/da.rb +84 -0
- data/lib/when_exe/locales/de.rb +92 -0
- data/lib/when_exe/locales/de_AT.rb +92 -0
- data/lib/when_exe/locales/de_CH.rb +92 -0
- data/lib/when_exe/locales/el.rb +93 -0
- data/lib/when_exe/locales/en.rb +88 -0
- data/lib/when_exe/locales/en_AU.rb +88 -0
- data/lib/when_exe/locales/en_CA.rb +88 -0
- data/lib/when_exe/locales/en_GB.rb +88 -0
- data/lib/when_exe/locales/en_IN.rb +88 -0
- data/lib/when_exe/locales/en_NZ.rb +88 -0
- data/lib/when_exe/locales/eo.rb +89 -0
- data/lib/when_exe/locales/es.rb +84 -0
- data/lib/when_exe/locales/es_419.rb +84 -0
- data/lib/when_exe/locales/es_AR.rb +84 -0
- data/lib/when_exe/locales/es_CL.rb +84 -0
- data/lib/when_exe/locales/es_CO.rb +84 -0
- data/lib/when_exe/locales/es_MX.rb +84 -0
- data/lib/when_exe/locales/es_PE.rb +85 -0
- data/lib/when_exe/locales/es_VE.rb +84 -0
- data/lib/when_exe/locales/et.rb +94 -0
- data/lib/when_exe/locales/eu.rb +95 -0
- data/lib/when_exe/locales/fa.rb +80 -0
- data/lib/when_exe/locales/fi.rb +89 -0
- data/lib/when_exe/locales/fr.rb +88 -0
- data/lib/when_exe/locales/fr_CA.rb +88 -0
- data/lib/when_exe/locales/fr_CH.rb +88 -0
- data/lib/when_exe/locales/gl.rb +81 -0
- data/lib/when_exe/locales/he.rb +84 -0
- data/lib/when_exe/locales/hi.rb +80 -0
- data/lib/when_exe/locales/hi_IN.rb +84 -0
- data/lib/when_exe/locales/hr.rb +128 -0
- data/lib/when_exe/locales/hu.rb +84 -0
- data/lib/when_exe/locales/id.rb +89 -0
- data/lib/when_exe/locales/is.rb +89 -0
- data/lib/when_exe/locales/it.rb +87 -0
- data/lib/when_exe/locales/it_CH.rb +87 -0
- data/lib/when_exe/locales/ja.rb +78 -0
- data/lib/when_exe/locales/kn.rb +86 -0
- data/lib/when_exe/locales/ko.rb +78 -0
- data/lib/when_exe/locales/links.rb +2342 -0
- data/lib/when_exe/locales/lo.rb +123 -0
- data/lib/when_exe/locales/locales.rb +91 -0
- data/lib/when_exe/locales/lt.rb +111 -0
- data/lib/when_exe/locales/lv.rb +118 -0
- data/lib/when_exe/locales/mk.rb +93 -0
- data/lib/when_exe/locales/mn.rb +80 -0
- data/lib/when_exe/locales/nb.rb +81 -0
- data/lib/when_exe/locales/ne.rb +81 -0
- data/lib/when_exe/locales/nl.rb +92 -0
- data/lib/when_exe/locales/nn.rb +73 -0
- data/lib/when_exe/locales/or.rb +84 -0
- data/lib/when_exe/locales/pl.rb +128 -0
- data/lib/when_exe/locales/pt.rb +88 -0
- data/lib/when_exe/locales/pt_BR.rb +88 -0
- data/lib/when_exe/locales/rm.rb +143 -0
- data/lib/when_exe/locales/ro.rb +105 -0
- data/lib/when_exe/locales/ru.rb +128 -0
- data/lib/when_exe/locales/sk.rb +109 -0
- data/lib/when_exe/locales/sl.rb +122 -0
- data/lib/when_exe/locales/sr.rb +122 -0
- data/lib/when_exe/locales/sv.rb +83 -0
- data/lib/when_exe/locales/sw.rb +89 -0
- data/lib/when_exe/locales/th.rb +78 -0
- data/lib/when_exe/locales/tl.rb +99 -0
- data/lib/when_exe/locales/tr.rb +96 -0
- data/lib/when_exe/locales/uk.rb +128 -0
- data/lib/when_exe/locales/uz.rb +128 -0
- data/lib/when_exe/locales/vi.rb +94 -0
- data/lib/when_exe/locales/wo.rb +82 -0
- data/lib/when_exe/locales/zh_CN.rb +77 -0
- data/lib/when_exe/locales/zh_HK.rb +77 -0
- data/lib/when_exe/locales/zh_TW.rb +77 -0
- data/lib/when_exe/mini_application.rb +252 -0
- data/lib/when_exe/parts/enumerator.rb +472 -0
- data/lib/when_exe/parts/geometric_complex.rb +379 -0
- data/lib/when_exe/parts/locale.rb +513 -0
- data/lib/when_exe/parts/method_cash.rb +207 -0
- data/lib/when_exe/parts/resource.rb +806 -0
- data/lib/when_exe/parts/timezone.rb +182 -0
- data/lib/when_exe/region/bahai.rb +145 -0
- data/lib/when_exe/region/balinese.rb +627 -0
- data/lib/when_exe/region/chinese.rb +896 -0
- data/lib/when_exe/region/chinese_calendar.rb +919 -0
- data/lib/when_exe/region/chinese_epoch.rb +1245 -0
- data/lib/when_exe/region/christian.rb +644 -0
- data/lib/when_exe/region/far_east.rb +192 -0
- data/lib/when_exe/region/french.rb +66 -0
- data/lib/when_exe/region/geologicalage.rb +639 -0
- data/lib/when_exe/region/indian.rb +1066 -0
- data/lib/when_exe/region/iranian.rb +66 -0
- data/lib/when_exe/region/islamic.rb +105 -0
- data/lib/when_exe/region/japanese.rb +851 -0
- data/lib/when_exe/region/japanese_notes.rb +964 -0
- data/lib/when_exe/region/japanese_residues.rb +1149 -0
- data/lib/when_exe/region/javanese.rb +228 -0
- data/lib/when_exe/region/jewish.rb +127 -0
- data/lib/when_exe/region/korean.rb +267 -0
- data/lib/when_exe/region/m17n.rb +115 -0
- data/lib/when_exe/region/martian.rb +215 -0
- data/lib/when_exe/region/mayan.rb +122 -0
- data/lib/when_exe/region/moon.rb +333 -0
- data/lib/when_exe/region/nihon_shoki.rb +73 -0
- data/lib/when_exe/region/planets.rb +585 -0
- data/lib/when_exe/region/pope.rb +298 -0
- data/lib/when_exe/region/residue.rb +229 -0
- data/lib/when_exe/region/roman.rb +325 -0
- data/lib/when_exe/region/ryukyu.rb +98 -0
- data/lib/when_exe/region/shire.rb +254 -0
- data/lib/when_exe/region/sun.rb +210 -0
- data/lib/when_exe/region/thai.rb +227 -0
- data/lib/when_exe/region/tibetan.rb +233 -0
- data/lib/when_exe/region/v50.rb +111 -0
- data/lib/when_exe/region/vietnamese.rb +173 -0
- data/lib/when_exe/region/world.rb +197 -0
- data/lib/when_exe/timestandard.rb +547 -0
- data/lib/when_exe/tmduration.rb +330 -330
- data/lib/when_exe/tmobjects.rb +1295 -0
- data/lib/when_exe/tmposition.rb +1955 -0
- data/lib/when_exe/tmreference.rb +1547 -0
- data/lib/when_exe/version.rb +10 -3
- data/link_to_online_documents +4 -0
- data/test/examples/JapanHolidays.ics +456 -0
- data/test/examples/Millennium.ics +17 -0
- data/test/examples/NewYork.ics +61 -0
- data/test/examples/Residue.m17n +135 -0
- data/test/examples/Spatial.m17n +179 -0
- data/test/examples/Terms.m17n +39 -0
- data/test/examples/Test.ics +53 -0
- data/test/examples/USA-DST.ics +61 -0
- data/test/examples/geometric_complex.rb +41 -0
- data/test/examples/sample.xml +14 -0
- data/test/examples/today.rb +61 -0
- data/test/test.rb +54 -19
- data/test/test.rb.config +1 -0
- data/test/test/basictypes.rb +368 -0
- data/test/test/calendartypes.rb +57 -0
- data/test/test/coordinates.rb +380 -0
- data/test/test/ephemeris.rb +127 -0
- data/test/test/googlecalendar.rb +167 -0
- data/test/test/icalendar.rb +848 -0
- data/test/test/inspect.rb +115 -0
- data/test/test/parts.rb +480 -0
- data/test/test/region/chinese.rb +161 -0
- data/test/test/region/french.rb +33 -0
- data/test/test/region/geologicalage.rb +14 -0
- data/test/test/region/indian.rb +55 -0
- data/test/test/region/iran.rb +54 -0
- data/test/test/region/islamic.rb +18 -0
- data/test/test/region/japanese.rb +62 -0
- data/test/test/region/jewish.rb +61 -0
- data/test/test/region/m17n.rb +181 -0
- data/test/test/region/mayan.rb +78 -0
- data/test/test/region/moon.rb +14 -0
- data/test/test/region/planets.rb +14 -0
- data/test/test/region/residue.rb +123 -0
- data/test/test/region/sun.rb +14 -0
- data/test/test/region/thai.rb +94 -0
- data/test/test/region/tibetan.rb +30 -0
- data/test/test/tmobjects.rb +356 -57
- data/test/test/tmposition.rb +237 -0
- data/test/test/tmreference.rb +95 -0
- data/when_exe.gemspec +2 -2
- metadata +187 -7
- data/doc/COPYING +0 -31
- data/doc/COPYING.ja +0 -25
- data/doc/document_url +0 -1
|
@@ -0,0 +1,964 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
=begin
|
|
3
|
+
Copyright (C) 2012-2013 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/region/japanese_residues'
|
|
9
|
+
|
|
10
|
+
class When::CalendarTypes::CalendarNote
|
|
11
|
+
|
|
12
|
+
#
|
|
13
|
+
# 日本暦注
|
|
14
|
+
#
|
|
15
|
+
class JapaneseNote < self
|
|
16
|
+
|
|
17
|
+
#
|
|
18
|
+
# 日本暦注の要素
|
|
19
|
+
#
|
|
20
|
+
class Notes < When::CalendarTypes::CalendarNote::NoteElement; end
|
|
21
|
+
|
|
22
|
+
NoteTypes = [
|
|
23
|
+
# 開始年 暦法 土用のオフセット
|
|
24
|
+
[-660, '儀鳳暦' ],
|
|
25
|
+
[ 454, '元嘉暦' ],
|
|
26
|
+
[ 697, '麟徳暦', (Rational( 4,15) + 244) / 1340 ], # 啓蟄 <-> 雨水
|
|
27
|
+
[ 764, '大衍暦', (Rational(13,30) + 531) / 3040 ],
|
|
28
|
+
[ 858, '五紀暦', (Rational( 4,15) + 244) / 1340 ],
|
|
29
|
+
[ 862, '宣明暦', (Rational( 1, 2) + 1468) / 8400 ],
|
|
30
|
+
[1685, ['timezone=32584.4/3600', '前貞享暦(節月)' ]],
|
|
31
|
+
[1687, ['timezone=32584.4/3600', '貞享暦(節月)' ]],
|
|
32
|
+
[1753, ['timezone=32584.4/3600', '前々宝暦暦(節月)']],
|
|
33
|
+
[1754, ['timezone=32584.4/3600', '前宝暦暦(節月)' ]],
|
|
34
|
+
[1755, ['timezone=32584.4/3600', '宝暦暦(節月)' ]],
|
|
35
|
+
[1771, ['timezone=32584.4/3600', '修正宝暦暦(節月)']],
|
|
36
|
+
[1798, ['timezone=32584.4/3600', '寛政暦(節月)' ]],
|
|
37
|
+
[1844, 'timezone=32584.4/3600'], # 京都平均太陽時の定朔定気法太陰太陽暦(天保暦の代用)
|
|
38
|
+
[1873, 'timezone=33539/3600' ], # 東京平均太陽時の定朔定気法太陰太陽暦
|
|
39
|
+
[1888, 'timezone=9'] # 日本標準時の定朔定気法太陰太陽暦
|
|
40
|
+
].reverse
|
|
41
|
+
|
|
42
|
+
NoteObjects = [When::BasicTypes::M17n, [
|
|
43
|
+
"namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
|
|
44
|
+
"locale:[=ja:]",
|
|
45
|
+
"names:[日本暦注]",
|
|
46
|
+
|
|
47
|
+
# 年の暦注 ----------------------------
|
|
48
|
+
[When::BasicTypes::M17n,
|
|
49
|
+
"names:[年]",
|
|
50
|
+
[Notes, "label:[干支]", 'position:共通'], # 干支
|
|
51
|
+
# [Notes, "label:[干=ja:%E5%8D%81%E5%B9%B2]",
|
|
52
|
+
# 'position:共通'], # 干
|
|
53
|
+
# [Notes, "label:[支=ja:%E5%8D%81%E4%BA%8C%E6%94%AF]",
|
|
54
|
+
# 'position:共通'], # 支
|
|
55
|
+
[Notes, "label:[九星]", 'position:民間'], # 九星
|
|
56
|
+
[Notes, "label:[大歳壇=]", 'position:暦序'], # 干支
|
|
57
|
+
[Notes, "label:[納音]", 'position:暦序', 'suffix:是'], # 干支
|
|
58
|
+
[Notes, "label:[大歳=ja:%E5%A4%AA%E6%AD%B3%E7%A5%9E]",
|
|
59
|
+
'position:暦序', 'suffix:在'], # 干支
|
|
60
|
+
[Notes, "label:[大将軍=ja:%E5%A4%A7%E5%B0%86%E8%BB%8D_(%E6%96%B9%E4%BD%8D%E7%A5%9E)]",
|
|
61
|
+
'position:暦序', 'suffix:在'], # 支
|
|
62
|
+
[Notes, "label:[大陰=ja:%E5%A4%A7%E9%99%B0]",
|
|
63
|
+
'position:暦序', 'suffix:在'], # 支
|
|
64
|
+
[Notes, "label:[歳徳=ja:%E6%AD%B3%E5%BE%B3%E7%A5%9E]",
|
|
65
|
+
'position:暦序', 'suffix:在'], # 干
|
|
66
|
+
[Notes, "label:[歳刑=ja:%E6%AD%B3%E5%88%91%E7%A5%9E]",
|
|
67
|
+
'position:暦序', 'suffix:在'], # 支
|
|
68
|
+
[Notes, "label:[歳破=ja:%E6%AD%B3%E7%A0%B4%E7%A5%9E]",
|
|
69
|
+
'position:暦序', 'suffix:在'], # 支
|
|
70
|
+
[Notes, "label:[歳煞=ja:%E6%AD%B3%E6%AE%BA%E7%A5%9E]",
|
|
71
|
+
'position:暦序', 'suffix:在'], # 支
|
|
72
|
+
[Notes, "label:[黄幡=ja:%E9%BB%84%E5%B9%A1%E7%A5%9E]",
|
|
73
|
+
'position:暦序', 'suffix:在'], # 支
|
|
74
|
+
[Notes, "label:[豹尾=ja:%E8%B1%B9%E5%B0%BE%E7%A5%9E]",
|
|
75
|
+
'position:暦序', 'suffix:在'], # 支
|
|
76
|
+
[Notes, "label:[歳次=]", 'position:暦序', 'suffix:-'], # 支
|
|
77
|
+
[Notes, "label:[金神]", 'position:仮名暦', 'suffix:在'] # 干
|
|
78
|
+
],
|
|
79
|
+
|
|
80
|
+
# 月の暦注 ----------------------------
|
|
81
|
+
[When::BasicTypes::M17n,
|
|
82
|
+
"names:[月]",
|
|
83
|
+
[Notes, "label:[月名=ja:%E6%9C%88_(%E6%9A%A6)#.E6.97.A5.E6.9C.AC.E3.81.AE.E5.92.8C.E9.A2.A8.E6.9C.88.E5.90.8D]",
|
|
84
|
+
'position:月建'], # 月の和名
|
|
85
|
+
# [Notes, "label:[干支]", 'position:共通'], # 干支
|
|
86
|
+
# [Notes, "label:[干=ja:%E5%8D%81%E5%B9%B2]",
|
|
87
|
+
# 'position:共通'], # 干
|
|
88
|
+
# [Notes, "label:[支=ja:%E5%8D%81%E4%BA%8C%E6%94%AF]",
|
|
89
|
+
# 'position:共通'], # 支
|
|
90
|
+
[Notes, "label:[九星]", 'position:民間'], # 九星
|
|
91
|
+
[Notes, "label:[月建=]", 'position:月建', 'suffix:-'], # 干支
|
|
92
|
+
[Notes, "label:[天道=]", 'position:月建', 'suffix:-'], # 干
|
|
93
|
+
[Notes, "label:[天徳=]", 'position:月建', 'suffix:在'], # 干
|
|
94
|
+
[Notes, "label:[月煞=]", 'position:月建', 'suffix:在'], # 干
|
|
95
|
+
[Notes, "label:[用時=]", 'position:月建'], # 干
|
|
96
|
+
[Notes, "label:[月徳=]", 'position:月建', 'suffix:在'], # 干
|
|
97
|
+
[Notes, "label:[月徳合=]", 'position:月建', 'suffix:在'], # 干
|
|
98
|
+
[Notes, "label:[月空=]", 'position:月建', 'suffix:在'], # 干
|
|
99
|
+
[Notes, "label:[三鏡=]", 'position:月建'], # 干
|
|
100
|
+
[Notes, "label:[土府=]", 'position:月建', 'suffix:在'], # 干
|
|
101
|
+
[Notes, "label:[土公=ja:%E5%9C%9F%E5%85%AC%E7%A5%9E]",
|
|
102
|
+
'position:月建', 'suffix:在'] # 干
|
|
103
|
+
],
|
|
104
|
+
|
|
105
|
+
# 日の暦注 ----------------------------
|
|
106
|
+
[When::BasicTypes::M17n,
|
|
107
|
+
"names:[日]",
|
|
108
|
+
[Notes, "label:[干支]", 'position:共通'], # 干支
|
|
109
|
+
# [Notes, "label:[干=ja:%E5%8D%81%E5%B9%B2]",
|
|
110
|
+
# 'position:共通'], # 干
|
|
111
|
+
# [Notes, "label:[支=ja:%E5%8D%81%E4%BA%8C%E6%94%AF]",
|
|
112
|
+
# 'position:共通'], # 支
|
|
113
|
+
[Notes, "label:[納音]", 'position:共通', 'suffix:是'], # 干支
|
|
114
|
+
[Notes, "label:[十二直]", 'position:共通'], # 支 節月
|
|
115
|
+
[Notes, "label:[七曜]", 'position:共通'], # 七曜
|
|
116
|
+
[Notes, "label:[廿八宿=ja:%E4%BA%8C%E5%8D%81%E5%85%AB%E5%AE%BF]",
|
|
117
|
+
'position:共通'], # 廿八宿
|
|
118
|
+
[Notes, "label:[廿七宿=ja:%E4%BA%8C%E5%8D%81%E4%B8%83%E5%AE%BF]",
|
|
119
|
+
'position:共通'], # 暦月 暦日
|
|
120
|
+
[Notes, "label:[九星]", 'position:民間'], # 九星
|
|
121
|
+
[Notes, "label:[六曜]", 'position:民間'], # 暦月 暦日
|
|
122
|
+
[Notes, "label:[祝祭日]", 'position:祝祭日'], # 暦月 暦日 (七曜)
|
|
123
|
+
|
|
124
|
+
[Notes, "label:[節中=]", 'position:時候'], # 太陽黄経
|
|
125
|
+
[Notes, "label:[廿四節気=ja:%E4%BA%8C%E5%8D%81%E5%9B%9B%E7%AF%80%E6%B0%97]",
|
|
126
|
+
'position:時候'], # 太陽黄経
|
|
127
|
+
[Notes, "label:[七十二候]", 'position:時候'], # 太陽黄経
|
|
128
|
+
[Notes, "label:[六十卦=]", 'position:時候'], # 太陽黄経
|
|
129
|
+
[Notes, "label:[入梅]", 'position:雑節'], # 干 太陽黄経
|
|
130
|
+
|
|
131
|
+
[Notes, "label:[大禍=ja:%E5%A4%A7%E7%A6%8D%E6%97%A5#.E5.A4.A7.E7.A6.8D.E6.97.A5]",
|
|
132
|
+
'position:上段 上段 欄外 欄外', 'suffix:日'], # 支 節月
|
|
133
|
+
[Notes, "label:[滅門=ja:%E6%BB%85%E9%96%80%E6%97%A5#.E6.BB.85.E9.96.80.E6.97.A5]",
|
|
134
|
+
'position:上段 上段 欄外 欄外', 'suffix:日'], # 支 節月
|
|
135
|
+
[Notes, "label:[狼藉=ja:%E6%9A%A6%E6%B3%A8%E4%B8%8B%E6%AE%B5#.E7.8B.BC.E8.97.89.E6.97.A5]",
|
|
136
|
+
'position:上段 上段 欄外 欄外', 'suffix:日'], # 支 節月
|
|
137
|
+
|
|
138
|
+
[Notes, "label:[甘露=]", 'position:上段 上段 上段 上段', 'suffix:日'], # 七曜 廿七宿
|
|
139
|
+
[Notes, "label:[金剛峯=]", 'position:上段 上段 上段 上段'], # 七曜 廿七宿
|
|
140
|
+
[Notes, "label:[羅刹=]", 'position:中段 中段 上段 上段'], # 七曜 廿七宿
|
|
141
|
+
|
|
142
|
+
[Notes, "label:[大将軍=ja:%E5%A4%A7%E5%B0%86%E8%BB%8D_(%E6%96%B9%E4%BD%8D%E7%A5%9E)]",
|
|
143
|
+
'position:上段 上段 上段 上段', 'suffix:-'], # 干支 節年
|
|
144
|
+
[Notes, "label:[天一=ja:%E5%A4%A9%E4%B8%80%E7%A5%9E]",
|
|
145
|
+
'position:上段 上段 上段 上段', 'suffix:-'], # 干支
|
|
146
|
+
[Notes, "label:[土公=ja:%E5%9C%9F%E5%85%AC%E7%A5%9E]",
|
|
147
|
+
'position:上段 上段 上段 上段'], # 干支
|
|
148
|
+
[Notes, "label:[歳下食=ja:%E6%AD%B3%E4%B8%8B%E9%A3%9F#.E6.AD.B3.E4.B8.8B.E9.A3.9F]",
|
|
149
|
+
'position:上段 上段 上段 上段'], # 干支 節年
|
|
150
|
+
[Notes, "label:[忌遠行=]", 'position:上段 中段 上段 上段'], # 支 節月
|
|
151
|
+
[Notes, "label:[忌夜行=]", 'position:上段 中段 上段 上段'], # 支 節月
|
|
152
|
+
[Notes, "label:[下食時=ja:%E4%B8%8B%E9%A3%9F%E6%99%82#.E6.99.82.E4.B8.8B.E9.A3.9F]",
|
|
153
|
+
'position:上段 上段 上段 上段'], # 支 節月 貞享暦で一部廃止
|
|
154
|
+
[Notes, "label:[天間=]", 'position:上段 中段 上段 中段上'], # 干支 節月
|
|
155
|
+
[Notes, "label:[不視病=]", 'position:上段 上段 上段 上段'], # 干
|
|
156
|
+
[Notes, "label:[不問疾=]", 'position:上段 上段 上段 上段'], # 干
|
|
157
|
+
[Notes, "label:[不弔人=]", 'position:上段 上段 上段 上段'], # 支
|
|
158
|
+
[Notes, "label:[社=ja:%E7%A4%BE%E6%97%A5]",
|
|
159
|
+
'position:中段 中段 中段 中段', 'suffix:日'], # 干 太陽黄経
|
|
160
|
+
[Notes, "label:[三伏]", 'position:中段 中段 中段 中段'], # 干 太陽黄経
|
|
161
|
+
[Notes, "label:[除手足甲=]", 'position:中段 中段 中段 中段'], # 晦(除手足甲)、支(片方のみ), 没滅凶会日×
|
|
162
|
+
[Notes, "label:[沐浴=]", 'position:中段 中段 中段 中段'], # 支 没滅凶会日×
|
|
163
|
+
[Notes, "label:[臘=ja:%E8%87%98%E6%97%A5]",
|
|
164
|
+
'position:中段 中段 中段 中段', 'suffix:日'], # 支 太陽黄経
|
|
165
|
+
[Notes, "label:[伐=]", 'position:上段 中段 中段 中段上', 'suffix:日'], # 干支
|
|
166
|
+
[Notes, "label:[五墓=ja:%E4%BA%94%E5%A2%93%E6%97%A5#.E4.BA.94.E5.A2.93.E6.97.A5]",
|
|
167
|
+
'position:上段 上段 中段 中段下', 'suffix:日'], # 干支
|
|
168
|
+
[Notes, "label:[九虎=]", 'position:上段 中段 中段 中段上'], # 干支 節月
|
|
169
|
+
[Notes, "label:[八龍=]", 'position:上段 上段 中段 中段上'], # 干支 節月
|
|
170
|
+
[Notes, "label:[七鳥=]", 'position:上段 上段 中段 中段上'], # 干支 節月
|
|
171
|
+
[Notes, "label:[六蛇=]", 'position:上段 上段 中段 中段上'], # 干支 節月
|
|
172
|
+
|
|
173
|
+
[Notes, "label:[没=ja:%E6%B2%A1%E6%97%A5]",
|
|
174
|
+
'position:中段 中段 中段 中段', 'suffix:日'], # 太陽黄経
|
|
175
|
+
[Notes, "label:[日食]", 'position:中段 中段 中段 中段'], # 日食表
|
|
176
|
+
[Notes, "label:[滅=ja:%E6%BB%85%E6%97%A5]",
|
|
177
|
+
'position:中段 中段 中段 中段', 'suffix:日'], # 月の位相
|
|
178
|
+
[Notes, "label:[月食]", 'position:中段 中段 中段 中段'], # 月食表
|
|
179
|
+
[Notes, "label:[月相]", 'position:中段 中段 中段 中段'], # 月の位相
|
|
180
|
+
[Notes, "label:[土用事=ja:%E5%9C%9F%E7%94%A8]",
|
|
181
|
+
'position:中段 中段 中段 中段'], # 太陽黄経
|
|
182
|
+
[Notes, "label:[伏龍=]", 'position:上段 上段 下段 下段', 'suffix:在'], # 太陽黄経
|
|
183
|
+
|
|
184
|
+
[Notes, "label:[凶会=ja:%E5%87%B6%E4%BC%9A%E6%97%A5#.E5.87.B6.E4.BC.9A.E6.97.A5]",
|
|
185
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 干支 節月(宣明暦以前)/暦月(貞享暦以降)
|
|
186
|
+
[Notes, "label:[大小歳=]", 'position:下段 下段 下段 下段'], # 干支 節月
|
|
187
|
+
[Notes, "label:[歳徳=ja:%E6%AD%B3%E5%BE%B3%E7%A5%9E]",
|
|
188
|
+
'position:下段 下段 下段 下段',], # 干 節年 凶会日× ~合も
|
|
189
|
+
[Notes, "label:[天恩=ja:%E5%A4%A9%E6%81%A9%E6%97%A5#.E5.A4.A9.E6.81.A9.E6.97.A5]",
|
|
190
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 干支 節月 凶会日×
|
|
191
|
+
[Notes, "label:[天赦=ja:%E6%9A%A6%E6%B3%A8%E4%B8%8B%E6%AE%B5#.E5.A4.A9.E8.B5.A6.E6.97.A5]",
|
|
192
|
+
'position:下段 下段 下段 下段'], # 干支 節月
|
|
193
|
+
[Notes, "label:[母倉=ja:%E6%AF%8D%E5%80%89%E6%97%A5#.E6.AF.8D.E5.80.89.E6.97.A5]",
|
|
194
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 支 節月 凶会日×
|
|
195
|
+
[Notes, "label:[月徳=]", 'position:下段 下段 下段 下段',], # 干 節月 凶会日× ~合も
|
|
196
|
+
[Notes, "label:[九坎=]", 'position:下段 下段 下段 下段'], # 支 節月
|
|
197
|
+
[Notes, "label:[帰忌=ja:%E5%B8%B0%E5%BF%8C%E6%97%A5#.E5.B8.B0.E5.BF.8C.E6.97.A5]",
|
|
198
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 支 節月
|
|
199
|
+
[Notes, "label:[血忌=ja:%E8%A1%80%E5%BF%8C%E6%97%A5#.E8.A1.80.E5.BF.8C.E6.97.A5]",
|
|
200
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 支 節月
|
|
201
|
+
[Notes, "label:[無翹=]", 'position:下段 下段 下段 下段'], # 支 節月
|
|
202
|
+
[Notes, "label:[厭=]", 'position:下段 下段 下段 下段'], # 支 節月
|
|
203
|
+
[Notes, "label:[重=ja:%E9%87%8D%E6%97%A5#.E9.87.8D.E6.97.A5]",
|
|
204
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 支
|
|
205
|
+
[Notes, "label:[復=ja:%E5%BE%A9%E6%97%A5#.E5.BE.A9.E6.97.A5]",
|
|
206
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 干 節月
|
|
207
|
+
[Notes, "label:[月煞=]", 'position:下段 下段 下段 下段', 'suffix:在'], # 支 節月
|
|
208
|
+
[Notes, "label:[往亡=ja:%E5%BE%80%E4%BA%A1%E6%97%A5#.E5.BE.80.E4.BA.A1.E6.97.A5]",
|
|
209
|
+
'position:下段 下段 下段 下段', 'suffix:日'], # 太陽黄経
|
|
210
|
+
[Notes, "label:[日遊=ja:%E6%97%A5%E9%81%8A%E7%A5%9E]",
|
|
211
|
+
'position:最下段', 'suffix:在'], # 干支
|
|
212
|
+
|
|
213
|
+
[Notes, "label:[受死=ja:%E5%8F%97%E6%AD%BB%E6%97%A5#.E5.8F.97.E6.AD.BB.E6.97.A5]",
|
|
214
|
+
'position:仮名暦', 'suffix:日'], # 支 節月
|
|
215
|
+
[Notes, "label:[彼岸]", 'position:仮名暦'], # 太陽黄経
|
|
216
|
+
[Notes, "label:[八専]", 'position:仮名暦'], # 干支
|
|
217
|
+
[Notes, "label:[金神間日=ja:%E9%87%91%E7%A5%9E#.E9.87.91.E7.A5.9E.E3.81.AE.E9.81.8A.E8.A1.8C.E3.83.BB.E9.96.93.E6.97.A5]",
|
|
218
|
+
'position:仮名暦'], # 支 節月
|
|
219
|
+
[Notes, "label:[天火=ja:%E5%A4%A9%E7%81%AB%E6%97%A5#.E5.A4.A9.E7.81.AB.E6.97.A5]",
|
|
220
|
+
'position:仮名暦', 'suffix:日'], # 支 節月
|
|
221
|
+
[Notes, "label:[地火=ja:%E5%9C%B0%E7%81%AB%E6%97%A5#.E5.9C.B0.E7.81.AB.E6.97.A5]",
|
|
222
|
+
'position:仮名暦', 'suffix:日'], # 支 節月
|
|
223
|
+
[Notes, "label:[人火=]", 'position:仮名暦'], # 支 節月
|
|
224
|
+
[Notes, "label:[雷火=]", 'position:仮名暦'], # 支 節月
|
|
225
|
+
[Notes, "label:[赤舌=ja:%E8%B5%A4%E8%88%8C%E6%97%A5]",
|
|
226
|
+
'position:仮名暦', 'suffix:日'], # 暦月 暦日
|
|
227
|
+
[Notes, "label:[十死=ja:%E5%8D%81%E6%AD%BB%E6%97%A5#.E5.8D.81.E6.AD.BB.E6.97.A5]",
|
|
228
|
+
'position:仮名暦', 'suffix:日'], # 支 節月
|
|
229
|
+
[Notes, "label:[道虚=]", 'position:仮名暦', 'suffix:日'], # 暦日
|
|
230
|
+
[Notes, "label:[大明=ja:%E5%A4%A7%E6%98%8E%E6%97%A5#.E5.A4.A7.E6.98.8E.E6.97.A5]",
|
|
231
|
+
'position:仮名暦', 'suffix:日'], # 干支
|
|
232
|
+
[Notes, "label:[赤口=ja:%E8%B5%A4%E5%8F%A3%E6%97%A5]",
|
|
233
|
+
'position:仮名暦', 'suffix:日'], # 暦月 暦日
|
|
234
|
+
[Notes, "label:[甲子待=ja:%E7%94%B2%E5%AD%90]",
|
|
235
|
+
'position:仮名暦'], # 干支
|
|
236
|
+
[Notes, "label:[庚申待]", 'position:仮名暦'], # 干支
|
|
237
|
+
[Notes, "label:[犯土]", 'position:仮名暦'], # 干支
|
|
238
|
+
[Notes, "label:[十方暮]", 'position:仮名暦'], # 干支
|
|
239
|
+
[Notes, "label:[一粒万倍=ja:%E4%B8%80%E7%B2%92%E4%B8%87%E5%80%8D%E6%97%A5]",
|
|
240
|
+
'position:仮名暦', 'suffix:日'], # 支 節月
|
|
241
|
+
[Notes, "label:[天福=]", 'position:仮名暦'], # 支 節月
|
|
242
|
+
[Notes, "label:[地福=]", 'position:仮名暦'], # 支 節月
|
|
243
|
+
[Notes, "label:[地五福=]", 'position:仮名暦'], # 支 節月
|
|
244
|
+
[Notes, "label:[三隣亡]", 'position:仮名暦'], # 支 節月
|
|
245
|
+
[Notes, "label:[不成就=ja:%E4%B8%8D%E6%88%90%E5%B0%B1%E6%97%A5]",
|
|
246
|
+
'position:仮名暦', 'suffix:日'], # 暦月 暦日/晦日
|
|
247
|
+
|
|
248
|
+
[Notes, "label:[三宝吉=]", 'position:上段 上段 上段 上段'], # 干支 節月(宣明暦以前)/暦月(貞享暦以降)
|
|
249
|
+
[Notes, "label:[神吉=ja:%E7%A5%9E%E5%90%89%E6%97%A5#.E7.A5.9E.E5.90.89.E6.97.A5]",
|
|
250
|
+
'position:上段 上段 中段 中段上', 'suffix:日'], # 干支 節月
|
|
251
|
+
[Notes, "label:[雑事吉=]", 'position:雑事吉'], # 干支 節月(宣明暦以前)/暦月(貞享暦以降)
|
|
252
|
+
[Notes, "label:[小字注=]", 'position:下段小字 下段小字 下段小字 下段小字'], # 干支 節月(宣明暦以前)/暦月(貞享暦以降)
|
|
253
|
+
]
|
|
254
|
+
]]
|
|
255
|
+
|
|
256
|
+
#
|
|
257
|
+
# 日本暦注用の NoteObjects の要素のための内部クラス
|
|
258
|
+
#
|
|
259
|
+
class Notes
|
|
260
|
+
|
|
261
|
+
# @private
|
|
262
|
+
attr_reader :label, :position, :suffix
|
|
263
|
+
|
|
264
|
+
# @private
|
|
265
|
+
def to_note_hash(note, dates=nil)
|
|
266
|
+
{
|
|
267
|
+
:note => self,
|
|
268
|
+
:value => case @suffix
|
|
269
|
+
when '是' ; [@label + '是-', note[/.$/]]
|
|
270
|
+
when '在' ; [@label + '在-', note]
|
|
271
|
+
when '-' ; [@label + '-', note]
|
|
272
|
+
else ; note
|
|
273
|
+
end,
|
|
274
|
+
:position => @position[@position.size == 1 ? 0 : dates.index_g]
|
|
275
|
+
}
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
private
|
|
279
|
+
# オブジェクトの正規化
|
|
280
|
+
#
|
|
281
|
+
def _normalize(args=[], options={})
|
|
282
|
+
@position = @position.split(/ /)
|
|
283
|
+
end
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
#
|
|
287
|
+
# 日本暦注計算に必要となる暦日や暦法をまとめた内部クラス
|
|
288
|
+
#
|
|
289
|
+
class Dates
|
|
290
|
+
|
|
291
|
+
# @private
|
|
292
|
+
attr_reader :year, :calendar, :doyo, :o_date, :m_date, :l_date, :s_date, :s_terms, :l_phases
|
|
293
|
+
|
|
294
|
+
# 具注暦の配置パターン
|
|
295
|
+
# @private
|
|
296
|
+
def index_g
|
|
297
|
+
return @index_g if @index_g
|
|
298
|
+
@index_g = (@year < 1004) ? 0 : # 御堂関白記(前期)以前
|
|
299
|
+
(@year < 1185) ? 1 : # 御堂関白記(後期)
|
|
300
|
+
(@year < 1338) ? 2 : # 鎌倉時代
|
|
301
|
+
3 # 室町時代以降
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
# 七十二候パターン
|
|
305
|
+
# @private
|
|
306
|
+
def index_s
|
|
307
|
+
return @index_s if @index_s
|
|
308
|
+
@index_s = (@year < 1685) ? 1 : # 宣明暦式
|
|
309
|
+
(@year < 1755) ? 2 : # 貞享暦式
|
|
310
|
+
(@year < 1874) ? 3 : # 宝暦暦式
|
|
311
|
+
4 # 略本暦式
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
# 初期設定
|
|
315
|
+
# @private
|
|
316
|
+
def initialize(date, year, calendar, doyo=nil)
|
|
317
|
+
case calendar
|
|
318
|
+
when Array # 日本製定朔平気法
|
|
319
|
+
l_calendar = When.Calendar('ChineseLuniSolar?' + calendar[0])
|
|
320
|
+
s_calendar = When.Calendar('Chinese::' + calendar[1])
|
|
321
|
+
when /timezone/ # 定朔定気法
|
|
322
|
+
l_calendar = When.Calendar('ChineseLuniSolar?' + calendar)
|
|
323
|
+
s_calendar = When.Calendar('ChineseSolar?' + calendar)
|
|
324
|
+
else # 中国製平定朔平気法
|
|
325
|
+
l_calendar = When.Calendar('Chinese::' + calendar)
|
|
326
|
+
s_calendar = When.Calendar('Chinese::' + calendar + '(節月)')
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
@year = year
|
|
330
|
+
@calendar = calendar
|
|
331
|
+
@doyo = doyo
|
|
332
|
+
@o_date = date
|
|
333
|
+
@l_date = l_calendar ^ date
|
|
334
|
+
@m_date = date.frame.kind_of?(When::CalendarTypes::Julian) ? @l_date : date
|
|
335
|
+
@s_date = s_calendar ^ date
|
|
336
|
+
@s_terms = When::CalendarTypes::CalendarNote::SolarTerms.new('formula'=>s_calendar.formula[0])
|
|
337
|
+
@l_phases = When::CalendarTypes::CalendarNote::LunarPhases.new('formula'=>l_calendar.formula[-1])
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
NoteMethods = [:year_notes, :month_notes, :day_notes]
|
|
342
|
+
|
|
343
|
+
# 暦注の計算
|
|
344
|
+
#
|
|
345
|
+
# @param [When::TM::TemporalPosition] date 暦注を計算する日時
|
|
346
|
+
# (date が When::TM::TemporalPosition でない場合、When::TM::TemporalPosition に変換して使用する)
|
|
347
|
+
# @param [Hash] options
|
|
348
|
+
# :indices, :notes およびその他のキー => {When::CalendarTypes::CalendarNote#notes} を参照
|
|
349
|
+
#
|
|
350
|
+
# @return [Hash] :notes が String の場合
|
|
351
|
+
# @return [Array<Hash>] 上記に該当せず、:indices が Integer の場合
|
|
352
|
+
# @return [Array<Array<Hash>>] 上記のいずれにも該当しない場合
|
|
353
|
+
# @note return 値の [Hash] の要素は下記の通り
|
|
354
|
+
# :note => 暦注要素 (When::CalendarTypes::JapaneseNote::Notes)
|
|
355
|
+
# :value => 暦注の値 (String or When::BasicTypes::M17n または、その Array)
|
|
356
|
+
# :position => 具注暦でのその暦注の配置場所(String)
|
|
357
|
+
#
|
|
358
|
+
def notes(date, options={})
|
|
359
|
+
dates, indices, notes, conditions, options = _parse(date, options)
|
|
360
|
+
_result(indices.map {|i|
|
|
361
|
+
next [] unless i <= dates.o_date.precision
|
|
362
|
+
send(NoteMethods[i-1], dates, notes[i-1], conditions)
|
|
363
|
+
}, options)
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
private
|
|
367
|
+
|
|
368
|
+
# オブジェクトの正規化
|
|
369
|
+
def _normalize(args=[], options={})
|
|
370
|
+
@prime ||= [%w(干支), %w(月名), %w(干支 六曜 廿四節気 祝祭日)]
|
|
371
|
+
super
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
# 年の暦注
|
|
375
|
+
def year_notes(dates, notes, conditions={})
|
|
376
|
+
_note_values(dates, notes, _all_keys[-3], _elements[-3]) do |dates, focused_notes, notes_hash|
|
|
377
|
+
|
|
378
|
+
root = When.Resource('_co:CommonResidue')
|
|
379
|
+
|
|
380
|
+
# 干支
|
|
381
|
+
residue = dates.m_date.most_significant_coordinate-4
|
|
382
|
+
notes_hash['干支'] = root['干支'][residue % 60]
|
|
383
|
+
notes_hash['干'] = root['干' ][residue % 10]
|
|
384
|
+
notes_hash['支'] = root['支' ][residue % 12]
|
|
385
|
+
|
|
386
|
+
# 九星
|
|
387
|
+
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.year(dates.s_date.most_significant_coordinate-4)]
|
|
388
|
+
|
|
389
|
+
# その他
|
|
390
|
+
[notes_hash['干支'], notes_hash['干'], notes_hash['支']].each do |note|
|
|
391
|
+
note._year_notes(notes_hash, dates, conditions)
|
|
392
|
+
end
|
|
393
|
+
notes_hash
|
|
394
|
+
end
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
# 月の暦注
|
|
398
|
+
def month_notes(dates, notes, conditions={})
|
|
399
|
+
_note_values(dates, notes, _all_keys[-2], _elements[-2]) do |dates, focused_notes, notes_hash|
|
|
400
|
+
|
|
401
|
+
root = When.Resource('_co:CommonResidue')
|
|
402
|
+
|
|
403
|
+
# 干支
|
|
404
|
+
residue = dates.m_date.most_significant_coordinate*12+(dates.m_date.cal_date[1] * 1)+13
|
|
405
|
+
notes_hash['干支'] = root['干支'][residue % 60]
|
|
406
|
+
notes_hash['干'] = root['干' ][residue % 10]
|
|
407
|
+
notes_hash['支'] = root['支' ][residue % 12]
|
|
408
|
+
|
|
409
|
+
# 九星
|
|
410
|
+
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.month(
|
|
411
|
+
dates.s_date.most_significant_coordinate*12+dates.s_date.cal_date[1]+13)]
|
|
412
|
+
|
|
413
|
+
# その他
|
|
414
|
+
[notes_hash['干支'], notes_hash['干'], notes_hash['支'], JapaneseLuniSolarNote].each do |note|
|
|
415
|
+
note._month_notes(notes_hash, dates, conditions)
|
|
416
|
+
end
|
|
417
|
+
notes_hash
|
|
418
|
+
end
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
# 日の暦注
|
|
422
|
+
def day_notes(dates, notes, conditions={})
|
|
423
|
+
_note_values(dates, notes, _all_keys[-1], _elements[-1]) do |dates, focused_notes, notes_hash|
|
|
424
|
+
|
|
425
|
+
root = When.Resource('_co:CommonResidue')
|
|
426
|
+
|
|
427
|
+
# 干支
|
|
428
|
+
residue = dates.s_date.to_i-11
|
|
429
|
+
notes_hash['干支'] = root['干支'][residue % 60]
|
|
430
|
+
notes_hash['干'] = root['干' ][residue % 10]
|
|
431
|
+
notes_hash['支'] = root['支' ][residue % 12]
|
|
432
|
+
|
|
433
|
+
# 七曜
|
|
434
|
+
notes_hash['七曜'] ||= root['Week'][dates.s_date.to_i % 7]
|
|
435
|
+
|
|
436
|
+
# 廿八宿
|
|
437
|
+
notes_hash['廿八宿'] ||= root['宿'][(dates.s_date.to_i+11) % 28] if dates.year >= 1685
|
|
438
|
+
|
|
439
|
+
# 九星
|
|
440
|
+
notes_hash['九星'] ||= root['九星'][When::Coordinates::Kyusei.day(dates.o_date, dates.s_terms)]
|
|
441
|
+
|
|
442
|
+
# その他
|
|
443
|
+
[SolarTerms, LunarPhases, notes_hash['干支'], notes_hash['干'], notes_hash['支'],
|
|
444
|
+
JapaneseLuniSolarNote, JapaneseSolarNote].each do |note|
|
|
445
|
+
note._day_notes(notes_hash, dates, conditions)
|
|
446
|
+
end
|
|
447
|
+
|
|
448
|
+
# 廿七宿
|
|
449
|
+
notes_hash['廿七宿'] = root['宿'][notes_hash['廿七宿']] if notes_hash['廿七宿'].kind_of?(Integer)
|
|
450
|
+
|
|
451
|
+
# 廿四節気
|
|
452
|
+
notes_hash['廿四節気'] = 3 - notes_hash['廿四節気'] if dates.calendar == '麟徳暦' &&
|
|
453
|
+
[1,2].include?(notes_hash['廿四節気']) # 啓蟄 <-> 雨水
|
|
454
|
+
notes_hash['廿四節気'] = root['二十四節気::*'][(notes_hash['廿四節気']-3) % 24] if notes_hash['廿四節気'].kind_of?(Integer)
|
|
455
|
+
notes_hash
|
|
456
|
+
end
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
#
|
|
460
|
+
# 日本暦日情報オブジェクトの生成
|
|
461
|
+
#
|
|
462
|
+
def _to_date_for_note(date)
|
|
463
|
+
date = _to_japanese_date(date)
|
|
464
|
+
return nil unless date
|
|
465
|
+
year = date.most_significant_coordinate
|
|
466
|
+
NoteTypes.each do |type|
|
|
467
|
+
start, calendar, doyo = type
|
|
468
|
+
return Dates.new(date, year, calendar, doyo) if year >= start
|
|
469
|
+
end
|
|
470
|
+
nil
|
|
471
|
+
end
|
|
472
|
+
|
|
473
|
+
#
|
|
474
|
+
# 任意の暦を日本暦日に変換
|
|
475
|
+
#
|
|
476
|
+
def _to_japanese_date(date)
|
|
477
|
+
return date if date.frame.kind_of?(When::CalendarTypes::ChineseLuniSolar) ||
|
|
478
|
+
date._attr[:query] && date._attr[:query]['area'].to_s == '日本'
|
|
479
|
+
(date^ When.era(:area=>'日本')).each do |list|
|
|
480
|
+
return list[0] if list[0]
|
|
481
|
+
end
|
|
482
|
+
nil
|
|
483
|
+
end
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
#
|
|
487
|
+
# 太陽暦の暦注・祝祭日
|
|
488
|
+
#
|
|
489
|
+
class JapaneseSolarNote < self
|
|
490
|
+
|
|
491
|
+
NotesList = {
|
|
492
|
+
[ 1, 1] => [[1868..1872, '元旦'], [1874..1948, '四方拝'], [1949..2100, '元日']],
|
|
493
|
+
[ 1, 3] => [[1874..1948, '元始祭']],
|
|
494
|
+
[ 1, 5] => [[1874..1948, '新年宴会']],
|
|
495
|
+
[ 1,-2] => [[2000..2100, '成人の日']],
|
|
496
|
+
[ 1,15] => [[1868..1872, '小正月'], [1949..1999, '成人の日']],
|
|
497
|
+
[ 1,29] => [[1873..1873, '神武天皇即位日']],
|
|
498
|
+
[ 1,30] => [[1874..1912, '孝明天皇祭']],
|
|
499
|
+
[ 2,11] => [[1874..1948, '紀元節'], [1967..2100, '建国記念の日']],
|
|
500
|
+
[ 3, 3] => [[1868..1872, '弥生節句']],
|
|
501
|
+
[ 3, 0] => [[1879..1948, '春季皇霊祭'], [1949..2100, '春分の日']],
|
|
502
|
+
[ 4, 3] => [[1874..1948, '神武天皇祭']],
|
|
503
|
+
[ 4,29] => [[1927..1948, '天長節'], [1949..1988, '天皇誕生日'], [1989..2006, 'みどりの日'], [2007..2100, '昭和の日']],
|
|
504
|
+
[ 5, 3] => [[1949..2100, '憲法記念日']],
|
|
505
|
+
[ 5, 4] => [[2007..2100, 'みどりの日']],
|
|
506
|
+
[ 5, 5] => [[1868..1872, '端午節句'], [1949..2100, 'こどもの日']],
|
|
507
|
+
[ 7, 7] => [[1868..1872, '七夕節句']],
|
|
508
|
+
[ 7,15] => [[1868..1872, 'お盆']],
|
|
509
|
+
[ 7,20] => [[1996..2002, '海の日']],
|
|
510
|
+
[ 7,-3] => [[2003..2100, '海の日']],
|
|
511
|
+
[ 7,30] => [[1913..1926, '明治天皇祭']],
|
|
512
|
+
[ 8, 1] => [[1868..1872, '田実節句']],
|
|
513
|
+
[ 8,31] => [[1913..1926, '天長節']],
|
|
514
|
+
[ 9, 9] => [[1868..1872, '重陽節句']],
|
|
515
|
+
[ 9,15] => [[1966..2002, '敬老の日']],
|
|
516
|
+
[ 9,-3] => [[2003..2100, '敬老の日']],
|
|
517
|
+
[ 9,17] => [[1874..1878, '神嘗祭']],
|
|
518
|
+
[ 9, 0] => [[1878..1947, '秋季皇霊祭'], [1948..2100, '秋分の日']],
|
|
519
|
+
[10,10] => [[1966..1999, '体育の日']],
|
|
520
|
+
[10,-2] => [[2000..2100, '体育の日']],
|
|
521
|
+
[10,17] => [[1879..1947, '神嘗祭']],
|
|
522
|
+
[10,31] => [[1913..1926, '天長節祝日']],
|
|
523
|
+
[11, 3] => [[1873..1911, '天長節'], [1927..1947, '明治節'], [1948..2100, '文化の日']],
|
|
524
|
+
[11,23] => [[1873..1947, '新嘗祭'], [1948..2100, '勤労感謝の日']],
|
|
525
|
+
[12,23] => [[1989..2100, '天皇誕生日']],
|
|
526
|
+
[12,25] => [[1927..1947, '大正天皇祭']]
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
class << self
|
|
530
|
+
|
|
531
|
+
# 日の暦注 - 祝祭日の計算
|
|
532
|
+
# @private
|
|
533
|
+
def _day_notes(notes, dates, conditions={})
|
|
534
|
+
# 明治維新以降のみ扱う
|
|
535
|
+
year = dates.o_date.most_significant_coordinate
|
|
536
|
+
return notes unless year >= 1868
|
|
537
|
+
|
|
538
|
+
# 春分の日と秋分の日を祝祭日に加える
|
|
539
|
+
long = {3=>0, 9=>180}[dates.o_date.cal_date[1]] if year >= 1878
|
|
540
|
+
if long
|
|
541
|
+
date = When.when?(dates.o_date.to_cal_date.to_s,
|
|
542
|
+
{:clock=>When.Clock(dates.s_date.frame.timezone[0]*86400)})
|
|
543
|
+
term = dates.s_terms.term(date.floor(When::MONTH,
|
|
544
|
+
When::DAY), [long,360]).cal_date[1..2]
|
|
545
|
+
list = NotesList.dup
|
|
546
|
+
list[term] = list[[term[0],0]]
|
|
547
|
+
else
|
|
548
|
+
list = NotesList
|
|
549
|
+
end
|
|
550
|
+
|
|
551
|
+
# 「国民の休日」制定以前
|
|
552
|
+
notes['祝祭日'] ||= _holiday(list, dates.o_date, '振替休日')
|
|
553
|
+
return notes if notes['祝祭日'] || year < 1988
|
|
554
|
+
|
|
555
|
+
# 「国民の休日」制定以後
|
|
556
|
+
duration = When.Duration('P1D')
|
|
557
|
+
[duration, -duration].each do |d|
|
|
558
|
+
return notes unless _holiday(list, dates.o_date + d)
|
|
559
|
+
end
|
|
560
|
+
notes['祝祭日'] = '国民の休日'
|
|
561
|
+
return notes
|
|
562
|
+
end
|
|
563
|
+
|
|
564
|
+
private
|
|
565
|
+
|
|
566
|
+
# 振替休日とハッピーマンデーを考慮した祝祭日
|
|
567
|
+
def _holiday(list, date, alternate=nil)
|
|
568
|
+
y = date.most_significant_coordinate
|
|
569
|
+
m, d = date.cal_date[1..2]
|
|
570
|
+
|
|
571
|
+
# 「振替休日」制定以前
|
|
572
|
+
note = _note(list, y, m, d)
|
|
573
|
+
return note if note || y < 1973
|
|
574
|
+
|
|
575
|
+
# 「振替休日」制定以降
|
|
576
|
+
case date.to_i % 7
|
|
577
|
+
when 0 # 月曜
|
|
578
|
+
# 振替休日
|
|
579
|
+
note = _note(list, y, m, d-1)
|
|
580
|
+
return alternate if note
|
|
581
|
+
# ハッピーマンデー
|
|
582
|
+
note = _note(list, y, m, -((d-1)/7 + 1))
|
|
583
|
+
return note if note
|
|
584
|
+
when 1,2 # 火曜・水曜
|
|
585
|
+
# 振替休日
|
|
586
|
+
return alternate if y >= 2007 && m == 5 && d == 6
|
|
587
|
+
end
|
|
588
|
+
end
|
|
589
|
+
|
|
590
|
+
# 振替休日とハッピーマンデーを考慮しない祝祭日
|
|
591
|
+
def _note(list, year, month, day)
|
|
592
|
+
year = [year, 2100].min
|
|
593
|
+
note = list[[month,day]]
|
|
594
|
+
return nil unless note
|
|
595
|
+
note.each do |range|
|
|
596
|
+
return range[1] if range[0].include?(year)
|
|
597
|
+
end
|
|
598
|
+
return nil
|
|
599
|
+
end
|
|
600
|
+
end
|
|
601
|
+
end
|
|
602
|
+
|
|
603
|
+
#
|
|
604
|
+
# 太陰太陽暦の暦注
|
|
605
|
+
#
|
|
606
|
+
class JapaneseLuniSolarNote < self
|
|
607
|
+
|
|
608
|
+
# 変換表 月日→27宿
|
|
609
|
+
StarMansions = [ # 正 2 3 4 5 6 7 8 9 10 11 12
|
|
610
|
+
[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
|
|
611
|
+
[ 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
|
|
612
|
+
[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
|
|
613
|
+
[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
|
|
614
|
+
[14, 16, 18, 23, 22, 24, 0, 3, 5, 7, 8, 12] # 4 : 閏月本説(元) (星24) (女09)
|
|
615
|
+
]
|
|
616
|
+
|
|
617
|
+
# 変換表 27宿→28宿
|
|
618
|
+
StarMansionIndex = (0..7).to_a + (9..27).to_a
|
|
619
|
+
|
|
620
|
+
# 七曜と27宿で決まる暦注
|
|
621
|
+
WeekDepended = {
|
|
622
|
+
# 日 月 火 水 木 金 土
|
|
623
|
+
'甘露' => [26, 17, 5, 22, 21, 3, 23], # 軫27 畢18 尾05 柳23 鬼22 房03 星24
|
|
624
|
+
'金剛峯' => [ 5, 8, 12, 16, 20, 24, 1], # 尾05 女09 壁13 昴17 井21 張25 亢01
|
|
625
|
+
'羅刹' => [15, 21, 25, 19, 2, 13, 22] # 胃16 鬼22 翼26 参20 氐02 奎14 柳23
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
# 六曜
|
|
629
|
+
Rokuyo = When.Resource('_m:JapaneseTerms::六曜')
|
|
630
|
+
|
|
631
|
+
# 月の暦注
|
|
632
|
+
# @private
|
|
633
|
+
def self._month_notes(notes, dates, conditions={})
|
|
634
|
+
# 月名
|
|
635
|
+
notes['月名'] ||= dates.o_date.name('month')
|
|
636
|
+
end
|
|
637
|
+
|
|
638
|
+
# 日の暦注
|
|
639
|
+
# @private
|
|
640
|
+
def self._day_notes(notes, dates, conditions={})
|
|
641
|
+
# 廿七宿
|
|
642
|
+
m, l = [1,0].map {|f| dates.m_date.cal_date[1] * f}
|
|
643
|
+
d = (StarMansions[l==1 ? (conditions[:i27]||0) :
|
|
644
|
+
(conditions[:n27]||0)][m-1] + dates.m_date.cal_date[2] - 1) % 27
|
|
645
|
+
notes['廿七宿'] ||= StarMansionIndex[d]
|
|
646
|
+
|
|
647
|
+
# 甘露 / 金剛峯 / 羅刹
|
|
648
|
+
w = (dates.m_date.to_i + 1) % 7
|
|
649
|
+
['甘露', '金剛峯', '羅刹'].each do |c|
|
|
650
|
+
notes[c] = c if d == WeekDepended[c][w]
|
|
651
|
+
end
|
|
652
|
+
|
|
653
|
+
# 三宝吉・神吉・雑事吉
|
|
654
|
+
notes['神吉'] = notes['雑事吉'] = notes['三宝吉'] = nil if notes['没' ] || notes['滅' ]
|
|
655
|
+
notes['神吉'] = notes['雑事吉'] = nil if notes['日食'] || notes['月食'] || notes['往亡']
|
|
656
|
+
notes['三宝吉'] = nil if !notes['甘露'] && (notes['羅刹'] || notes['日食'] || notes['月食'])
|
|
657
|
+
notes['三宝吉'] = notes['甘露'] ? '三宝吉' : nil if /\+/ =~ notes['三宝吉'].to_s
|
|
658
|
+
notes['三宝吉'] = '三吉' if notes['三宝吉'] && dates.year >= 1185 # 鎌倉以降
|
|
659
|
+
|
|
660
|
+
# 除手足甲 & 道虚
|
|
661
|
+
y,m0,d0 = dates.m_date.cal_date
|
|
662
|
+
notes['道虚'] = '道虚' if d0 % 6 == 0
|
|
663
|
+
if (d0 == 29)
|
|
664
|
+
m1 = (dates.m_date + When.Duration('P1D')).cal_date[1]
|
|
665
|
+
unless m0 == m1
|
|
666
|
+
# 晦日
|
|
667
|
+
notes['除手足甲'] = '除手足甲' unless notes['没'] || notes['滅'] || notes['凶会']
|
|
668
|
+
notes['道虚'] = '道虚'
|
|
669
|
+
misoka = true if m % 6 == 0 # 『現代こよみ読み解き事典』 for 不成就日
|
|
670
|
+
end
|
|
671
|
+
end
|
|
672
|
+
|
|
673
|
+
# 仮名暦
|
|
674
|
+
notes['赤舌' ] ||= d0 == (m * 5 - 3) % 6 + 1 ? '赤舌' : nil
|
|
675
|
+
notes['赤口' ] ||= d0 == (m * 7 - 4) % 8 + 1 ? '赤口' : nil
|
|
676
|
+
notes['不成就'] ||= d0 % 8 == [6,3,2,1,4,5][m % 6] || misoka ? '不成就' : nil
|
|
677
|
+
notes['六曜' ] ||= Rokuyo[(m + d0) % 6] if dates.year >= 1873 # 明治改暦以降
|
|
678
|
+
notes
|
|
679
|
+
end
|
|
680
|
+
end
|
|
681
|
+
|
|
682
|
+
#
|
|
683
|
+
# 月の位相による暦注
|
|
684
|
+
#
|
|
685
|
+
class LunarPhases < LuniSolarPositions
|
|
686
|
+
|
|
687
|
+
Phases = {7.0=>'上弦', 8.0=>'上弦', 15.0=>'望', 22.0=>'下弦', 23.0=>'下弦'}
|
|
688
|
+
|
|
689
|
+
# 日の暦注
|
|
690
|
+
# @private
|
|
691
|
+
def self._day_notes(notes, dates, conditions={})
|
|
692
|
+
return notes unless dates.year < 1685
|
|
693
|
+
date = When.when?(dates.o_date.to_cal_date.to_s,
|
|
694
|
+
{:clock=>When.Clock(dates.l_date.frame.timezone[0]*86400)})
|
|
695
|
+
phase, metsu = dates.l_phases.position(date)
|
|
696
|
+
phase = Phases[phase]
|
|
697
|
+
|
|
698
|
+
# 滅
|
|
699
|
+
notes['滅'] = '滅' if metsu == 2
|
|
700
|
+
|
|
701
|
+
# 月相
|
|
702
|
+
notes['月相'] ||=
|
|
703
|
+
/弦/ !~ phase ? phase : dates.l_phases.position(date, 0.5)[0] % 15 == 8.0 ? phase : nil
|
|
704
|
+
|
|
705
|
+
# 月食
|
|
706
|
+
notes['月食'] = nil # 計算できないので、偽としておく
|
|
707
|
+
notes
|
|
708
|
+
end
|
|
709
|
+
end
|
|
710
|
+
|
|
711
|
+
#
|
|
712
|
+
# 太陽黄経による暦注
|
|
713
|
+
#
|
|
714
|
+
class SolarTerms < LuniSolarPositions
|
|
715
|
+
|
|
716
|
+
Notes12 = %w(正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月)
|
|
717
|
+
|
|
718
|
+
Notes60_A = [
|
|
719
|
+
# +0
|
|
720
|
+
'侯小過外', # 315 : 正月
|
|
721
|
+
'侯需外', # 345 : 二月
|
|
722
|
+
'侯豫外', # 15 : 三月
|
|
723
|
+
'侯旅外', # 45 : 四月
|
|
724
|
+
'侯大有外', # 75 : 五月
|
|
725
|
+
'侯鼎外', # 105 : 六月
|
|
726
|
+
'侯常外', # 135 : 七月
|
|
727
|
+
'侯巽外', # 165 : 八月
|
|
728
|
+
'侯帰妹外', # 195 : 九月
|
|
729
|
+
'侯良外', # 225 : 十月
|
|
730
|
+
'侯未済外', # 255 : 十一月
|
|
731
|
+
'侯屯外' # 285 : 十二月
|
|
732
|
+
]
|
|
733
|
+
|
|
734
|
+
Notes60_B = [
|
|
735
|
+
# +3 +9 +15 +21 +27
|
|
736
|
+
'大夫蒙', '卿益', '公漸', '辟泰', '侯需内', # 315 : 正月
|
|
737
|
+
'大夫随', '卿晋', '公解', '辟大壮', '侯豫内', # 345 : 二月
|
|
738
|
+
'大夫訟', '卿蠱', '公革', '辟夬', '侯旅内', # 15 : 三月
|
|
739
|
+
'大夫師', '卿比', '公小畜', '辟乾', '侯大有内', # 45 : 四月
|
|
740
|
+
'大夫家人', '卿井', '公咸', '辟女后', '侯鼎内', # 75 : 五月
|
|
741
|
+
'大夫豊', '卿渙', '公履', '辟遁', '侯常内', # 105 : 六月
|
|
742
|
+
'大夫節', '卿同人', '公損', '辟否', '侯巽内', # 135 : 七月
|
|
743
|
+
'大夫萃', '卿大畜', '公賁', '辟観', '侯帰妹内', # 165 : 八月
|
|
744
|
+
'大夫無妄', '卿明夷', '公因', '辟剥', '侯良内', # 195 : 九月
|
|
745
|
+
'大夫既済', '卿噬嗑', '公大過', '辟坤', '侯未済内', # 225 : 十月
|
|
746
|
+
'大不蹇', '卿頤', '公中孚', '辟復', '侯屯内', # 255 : 十一月
|
|
747
|
+
'大夫謙', '卿睽', '公升', '辟臨', '侯小過内' # 285 : 十二月
|
|
748
|
+
]
|
|
749
|
+
|
|
750
|
+
Notes72 = [
|
|
751
|
+
# 宣明暦(中国) 宣明暦 貞享暦 宝暦暦・寛政暦 略本暦
|
|
752
|
+
# 315 : 正月
|
|
753
|
+
%w(東風解凍 東風解凍 東風解凍 東風解凍 東風解凍),
|
|
754
|
+
%w(蟄始振 蟄虫始振 梅花乃芳 黄鶯睍睆 黄鶯睍睆),
|
|
755
|
+
%w(魚上氷 魚上氷 魚上氷 魚上氷 魚上氷),
|
|
756
|
+
%w(獺祭魚 獺祭魚 土脈潤起 土脈潤起 土脉潤起),
|
|
757
|
+
%w(鴻雁来 鴻雁来 霞彩碧空 霞始靆 霞始靆),
|
|
758
|
+
%w(草木萌動 草木萌動 草木萌動 草木萌動 草木萌動),
|
|
759
|
+
|
|
760
|
+
# 345 : 二月
|
|
761
|
+
%w(桃始華 桃始華 蟄虫啓戸 蟄虫啓戸 蟄虫啓戸),
|
|
762
|
+
%w(倉庚鳴 倉庚鳴 寒雨間熟 桃始笑 桃始笑),
|
|
763
|
+
%w(鷹化為鳩 鷹化為鳩 菜虫化蝶 菜虫化蝶 菜虫化蝶),
|
|
764
|
+
%w(玄鳥至 玄鳥至 雀始巣 雀始巣 雀始巣),
|
|
765
|
+
%w(雷乃発声 雷乃発声 雷乃発声 桜始開 桜始開),
|
|
766
|
+
%w(始電 始電 桜始開桃始笑 雷乃発声 雷乃発声),
|
|
767
|
+
|
|
768
|
+
# 15 : 三月
|
|
769
|
+
%w(桐始華 桐始華 玄鳥至 玄鳥至 玄鳥至),
|
|
770
|
+
%w(田鼠化為鴑 田鼠化為鴑 鴻雁北 鴻雁北 鴻雁北),
|
|
771
|
+
%w(虹始見 虹始見 虹始見 虹始見 虹始見),
|
|
772
|
+
%w(萍始生 萍始生 葭始生 葭始生 葭始生),
|
|
773
|
+
%w(鳴鳩払其羽 鳴鳩払其羽 牡丹華 霜止出苗 霜止出苗),
|
|
774
|
+
%w(戴勝降桑 戴勝降桑 霜止出苗 牡丹華 牡丹華),
|
|
775
|
+
|
|
776
|
+
# 45 : 四月
|
|
777
|
+
%w(螻蟈鳴 螻蟈鳴 鵑始鳴 鼃始鳴 鼃始鳴),
|
|
778
|
+
%w(蚯蚓出 蚯蚓出 蚯蚓出 蚯蚓出 蚯蚓出),
|
|
779
|
+
%w(王瓜生 王瓜生 竹笋生 竹笋生 竹笋生),
|
|
780
|
+
%w(苦菜秀 苦菜秀 蚕起食桑 蚕起食桑 蚕起食桑),
|
|
781
|
+
%w(靡草死 靡草死 紅花栄 紅花栄 紅花栄),
|
|
782
|
+
%w(小暑至 小暑至 麦秋至 麦秋至 麦秋至),
|
|
783
|
+
|
|
784
|
+
# 75 : 五月
|
|
785
|
+
%w(蟷螂生 蟷螂生 螳螂生 螳螂生 螳螂生),
|
|
786
|
+
%w(鵙始鳴 鵙始鳴 腐草為螢 腐草為螢 腐草為螢),
|
|
787
|
+
%w(反舌無声 反舌無声 梅始黄 梅子黄 梅子黄),
|
|
788
|
+
%w(鹿角解 鹿角解 乃東枯 乃東枯 乃東枯),
|
|
789
|
+
%w(蝉始鳴 蝉始鳴 分龍雨 菖蒲華 菖蒲華),
|
|
790
|
+
%w(半夏生 半夏生 半夏生 半夏生 半夏生),
|
|
791
|
+
|
|
792
|
+
# 105 : 六月
|
|
793
|
+
%w(温風至 温風至 温風至 温風至 温風至),
|
|
794
|
+
%w(蟋蟀居壁 蟋蟀居壁 蓮始華 蓮始華 蓮始開),
|
|
795
|
+
%w(鷹乃学習 鷹乃学習 鷹乃学習 鷹乃学習 鷹乃学習),
|
|
796
|
+
%w(腐草為螢 腐草為螢 桐始結花 桐始結花 桐始結花),
|
|
797
|
+
%w(土潤溽暑 土潤溽暑 土潤溽暑 土潤溽暑 土潤溽暑),
|
|
798
|
+
%w(大雨時行 大雨時行 大雨時行 大雨時行 大雨時行),
|
|
799
|
+
|
|
800
|
+
# 135 : 七月
|
|
801
|
+
%w(涼風至 涼風至 涼風至 涼風至 涼風至),
|
|
802
|
+
%w(白露降 白露降 山沢浮雲 寒蝉鳴 寒蝉鳴),
|
|
803
|
+
%w(寒蝉鳴 寒蝉鳴 霧色已成 蒙霧升降 蒙霧升降),
|
|
804
|
+
%w(鷹乃祭鳥 鷹乃祭鳥 寒蝉鳴 綿柎開 綿柎開),
|
|
805
|
+
%w(天地始粛 天地始粛 天地始粛 天地始粛 天地始粛),
|
|
806
|
+
%w(禾乃登 禾乃登 禾乃登 禾乃登 禾乃登),
|
|
807
|
+
|
|
808
|
+
# 165 : 八月
|
|
809
|
+
%w(鴻雁来 鴻雁来 草露白 草露白 草露白),
|
|
810
|
+
%w(玄鳥帰 玄鳥帰 鶺鴒鳴 鶺鴒鳴 鶺鴒鳴),
|
|
811
|
+
%w(群鳥養羞 群鳥養羞 玄鳥去 玄鳥去 玄鳥去),
|
|
812
|
+
%w(雷乃収声 雷乃収声 鴻雁来 雷乃収声 雷乃収声),
|
|
813
|
+
%w(蟄虫坏戸 蟄虫坏戸 蟄虫坏戸 蟄虫坏戸 蟄虫坏戸),
|
|
814
|
+
%w(水始涸 水始涸 水始涸 水始涸 水始涸),
|
|
815
|
+
|
|
816
|
+
# 195 : 九月
|
|
817
|
+
%w(鴻雁来賓 鴻雁来賓 棗栗零 鴻雁来 鴻雁来),
|
|
818
|
+
%w(雀入大水為蛤 雀入大水為蛤 蟋蟀在戸 菊花開 菊花開),
|
|
819
|
+
%w(菊有黄花 菊有黄花 菊花開 蟋蟀在戸 蟋蟀在戸),
|
|
820
|
+
%w(豺乃祭獣 豺祭獣 霜始降 霜始降 霜始降),
|
|
821
|
+
%w(草木黄落 草木黄落 蔦楓紅葉 霎時施 霎時施),
|
|
822
|
+
%w(蟄虫咸俯 蟄虫咸俯 鶯雛鳴 楓蔦黄 楓蔦黄),
|
|
823
|
+
|
|
824
|
+
# 225 : 十月
|
|
825
|
+
%w(水始氷 水始氷 山茶始開 山茶始開 山茶始開),
|
|
826
|
+
%w(地始凍 地始凍 地始凍 地始凍 地始凍),
|
|
827
|
+
%w(野鶏入大水為蜃 野鶏入大水為蜃 霎乃降 金盞香 金盞香),
|
|
828
|
+
%w(虹蔵不見 虹蔵不見 虹蔵不見 虹蔵不見 虹蔵不見),
|
|
829
|
+
%w(天気上騰地気下降 天気上騰地気下降 樹葉咸落 朔風払葉 朔風払葉),
|
|
830
|
+
%w(閉塞而成冬 閉塞成冬 橘始黄 橘始黄 橘始黄),
|
|
831
|
+
|
|
832
|
+
# 255 : 十一月
|
|
833
|
+
%w(鶡鳥不鳴 鶡鳥不鳴 閉塞成冬 閉塞成冬 閉塞成冬),
|
|
834
|
+
%w(虎始交 武始交 熊蟄穴 熊蟄穴 熊蟄穴),
|
|
835
|
+
%w(茘挺生 茘挺生 水仙開 鱖魚群 鱖魚群),
|
|
836
|
+
%w(蚯蚓結 蚯蚓結 乃東生 乃東生 乃東生),
|
|
837
|
+
%w(麋角解 麋角解 麋角解 麋角解 麋角解),
|
|
838
|
+
%w(水泉動 水泉動 雪下出麦 雪下出麦 雪下出麦),
|
|
839
|
+
|
|
840
|
+
# 285 : 十二月
|
|
841
|
+
%w(雁北嚮 雁北嚮 芹乃栄 芹乃栄 芹乃栄),
|
|
842
|
+
%w(鵲始巣 鵲始巣 風気乃行 水泉動 水泉動),
|
|
843
|
+
%w(野鶏始鴝 野鶏始鴝 雉始雊 雉始雊 雉始雊),
|
|
844
|
+
%w(鶏始乳 鶏始乳 款冬華 款冬華 款冬華),
|
|
845
|
+
%w(鷙鳥厲疾 鷙鳥厲疾 水沢腹堅 水沢腹堅 水沢腹堅),
|
|
846
|
+
%w(水沢腹堅 水沢腹堅 鶏始乳 鶏始乳 鶏始乳)
|
|
847
|
+
]
|
|
848
|
+
|
|
849
|
+
# 日の暦注
|
|
850
|
+
# @private
|
|
851
|
+
def self._day_notes(notes, dates, conditions={})
|
|
852
|
+
date = When.when?(dates.o_date.to_cal_date.to_s,
|
|
853
|
+
{:clock=>When.Clock(dates.s_date.frame.timezone[0]*86400)})
|
|
854
|
+
longitude, motsu = dates.s_terms.position(date)
|
|
855
|
+
|
|
856
|
+
# 三伏 - 庚
|
|
857
|
+
#
|
|
858
|
+
# 初 : 夏至から 20..29
|
|
859
|
+
# 仲 : 夏至から 30..39
|
|
860
|
+
# 後 : 立秋から 0..9
|
|
861
|
+
if !notes['三伏'] && notes['干'].remainder == 6 # 庚
|
|
862
|
+
if 109 <= longitude && longitude <= 129 # 夏至から
|
|
863
|
+
term = dates.s_terms.term(date, [-270,360])
|
|
864
|
+
diff = dates.s_date.to_i - term.to_i
|
|
865
|
+
notes['三伏'] = '初伏' if 20 <= diff && diff <= 29
|
|
866
|
+
notes['三伏'] = '中伏' if 30 <= diff && diff <= 39
|
|
867
|
+
elsif longitude == 135 # 立秋
|
|
868
|
+
notes['三伏'] = '末伏'
|
|
869
|
+
elsif 136 <= longitude && longitude <= 144 # 立秋から
|
|
870
|
+
term = dates.s_terms.term(date, [-225,360])
|
|
871
|
+
diff = dates.s_date.to_i - term.to_i
|
|
872
|
+
notes['三伏'] = '末伏' if 0 < diff && diff <= 9
|
|
873
|
+
end
|
|
874
|
+
end
|
|
875
|
+
|
|
876
|
+
# 社 - 戊
|
|
877
|
+
#
|
|
878
|
+
# 春秋分から -5..4
|
|
879
|
+
if !notes['社'] && notes['干'].remainder == 4 # 戊
|
|
880
|
+
if (longitude + 5) % 180 < 10 # 春秋分の近傍
|
|
881
|
+
term = dates.s_terms.term(date - When.Duration('P6D'), [0,180])
|
|
882
|
+
diff = dates.s_date.to_i - term.to_i
|
|
883
|
+
notes['社'] = '社' if -5 <= diff && diff <= 4
|
|
884
|
+
end
|
|
885
|
+
end
|
|
886
|
+
|
|
887
|
+
# 臘 - 辰
|
|
888
|
+
#
|
|
889
|
+
# 大寒から -6..5
|
|
890
|
+
if !notes['臘'] && notes['支'].remainder == 4 # 辰
|
|
891
|
+
if (longitude - 339) % 360 < 12 # 大寒の近傍
|
|
892
|
+
term = dates.s_terms.term(date - When.Duration('P7D'), [345,360])
|
|
893
|
+
diff = dates.s_date.to_i - term.to_i
|
|
894
|
+
notes['臘'] = '臘' if -6 <= diff && diff <= 5
|
|
895
|
+
end
|
|
896
|
+
end
|
|
897
|
+
|
|
898
|
+
# 入梅 - 壬
|
|
899
|
+
#
|
|
900
|
+
# 芒種から 0..11
|
|
901
|
+
if !notes['入梅'] && notes['干'].remainder == 8 # 壬
|
|
902
|
+
if (longitude - 120) % 360 < 10 # 芒種の近傍
|
|
903
|
+
term = dates.s_terms.term(date - When.Duration('P1D'), [120,360])
|
|
904
|
+
diff = dates.s_date.to_i - term.to_i
|
|
905
|
+
notes['入梅'] = '入梅' if 0 <= diff && diff <= 11
|
|
906
|
+
end
|
|
907
|
+
end
|
|
908
|
+
|
|
909
|
+
# 土用事
|
|
910
|
+
unless notes['土用事']
|
|
911
|
+
_longitude, _motsu = dates.doyo ? dates.s_terms.position(date, -dates.doyo) : [longitude, motsu]
|
|
912
|
+
if _motsu != 0 && _longitude % 90 == 27
|
|
913
|
+
notes['土用事'] =
|
|
914
|
+
(dates.year < 697) ? '土用' : # 元嘉暦以前
|
|
915
|
+
(dates.year < 764) ? '土王' : # 麟徳暦
|
|
916
|
+
(dates.year < 1685) ? '土用事' : # 大衍暦~宣明暦
|
|
917
|
+
'土用入' # 貞享暦以降
|
|
918
|
+
end
|
|
919
|
+
end
|
|
920
|
+
|
|
921
|
+
# 没
|
|
922
|
+
if motsu == 0
|
|
923
|
+
notes['没'] = '没' if dates.year < 1685
|
|
924
|
+
return notes
|
|
925
|
+
end
|
|
926
|
+
|
|
927
|
+
# 伏龍
|
|
928
|
+
notes['伏龍'] ||= {
|
|
929
|
+
315 => '庭内去堂', 15 => '門内百日', 115 => '東垣六十日',
|
|
930
|
+
175 => '四隅百日', 275 => '竈内四十日'
|
|
931
|
+
}[longitude]
|
|
932
|
+
|
|
933
|
+
# 廿四節気
|
|
934
|
+
div, mod = longitude.divmod(15)
|
|
935
|
+
if mod == 0
|
|
936
|
+
notes['廿四節気'] = (div - 21) % 24
|
|
937
|
+
div, mod = notes['廿四節気'].divmod(2)
|
|
938
|
+
notes['節中'] ||= Notes12[div] + %w(節 中)[mod]
|
|
939
|
+
end
|
|
940
|
+
|
|
941
|
+
# 六十卦
|
|
942
|
+
div, mod = longitude.divmod(30)
|
|
943
|
+
notes['六十卦'] ||= mod == 15 ? Notes60_A[(div - 10) % 12] : nil
|
|
944
|
+
div, mod = longitude.divmod(6)
|
|
945
|
+
notes['六十卦'] ||= mod == 0 ? Notes60_B[(div - 53) % 60] : nil
|
|
946
|
+
|
|
947
|
+
# 七十二候
|
|
948
|
+
div, mod = longitude.divmod(5)
|
|
949
|
+
notes['七十二候'] ||= mod == 0 ? Notes72[(div - 63) % 72][dates.index_s] : nil
|
|
950
|
+
|
|
951
|
+
# 彼岸
|
|
952
|
+
notes['彼岸'] ||= longitude % 180 == 2 ? '彼岸' : nil
|
|
953
|
+
|
|
954
|
+
# 往亡
|
|
955
|
+
month = dates.s_date.cal_date[1] - 1
|
|
956
|
+
div, mod = month.divmod(3)
|
|
957
|
+
notes['往亡'] ||= ((div+7)*(mod+1) + month * 30 + 314 - longitude) % 360 == 0 ? '往亡' : nil
|
|
958
|
+
|
|
959
|
+
# 日食
|
|
960
|
+
notes['日食'] = nil # 計算できないので、偽としておく
|
|
961
|
+
notes
|
|
962
|
+
end
|
|
963
|
+
end
|
|
964
|
+
end
|