when_exe 0.3.5 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. data/bin/irb.rc +1 -0
  2. data/bin/locales.rb +8 -6
  3. data/bin/when.rb +1 -1
  4. data/lib/when_exe.rb +231 -146
  5. data/lib/when_exe/basictypes.rb +108 -18
  6. data/lib/when_exe/calendarnote.rb +263 -116
  7. data/lib/when_exe/calendartypes.rb +413 -22
  8. data/lib/when_exe/coordinates.rb +58 -36
  9. data/lib/when_exe/core/compatibility.rb +8 -6
  10. data/lib/when_exe/core/extension.rb +40 -15
  11. data/lib/when_exe/ephemeris.rb +20 -19
  12. data/lib/when_exe/{region → ephemeris}/moon.rb +4 -4
  13. data/lib/when_exe/{region/ephemeric_notes.rb → ephemeris/notes.rb} +25 -6
  14. data/lib/when_exe/{region → ephemeris}/planets.rb +0 -0
  15. data/lib/when_exe/{region → ephemeris}/sun.rb +7 -3
  16. data/lib/when_exe/{region → ephemeris}/v50.rb +0 -0
  17. data/lib/when_exe/googlecalendar.rb +2 -2
  18. data/lib/when_exe/icalendar.rb +3 -3
  19. data/lib/when_exe/inspect.rb +130 -70
  20. data/lib/when_exe/locales/af.rb +2 -2
  21. data/lib/when_exe/locales/akt.rb +176 -0
  22. data/lib/when_exe/locales/ar.rb +2 -2
  23. data/lib/when_exe/locales/{locales.rb → autoload.rb} +6 -2
  24. data/lib/when_exe/locales/az.rb +2 -2
  25. data/lib/when_exe/locales/bg.rb +2 -2
  26. data/lib/when_exe/locales/bn.rb +2 -2
  27. data/lib/when_exe/locales/bs.rb +2 -2
  28. data/lib/when_exe/locales/ca.rb +2 -2
  29. data/lib/when_exe/locales/cs.rb +2 -2
  30. data/lib/when_exe/locales/cy.rb +2 -2
  31. data/lib/when_exe/locales/da.rb +2 -2
  32. data/lib/when_exe/locales/de.rb +2 -2
  33. data/lib/when_exe/locales/de_AT.rb +2 -2
  34. data/lib/when_exe/locales/de_CH.rb +2 -2
  35. data/lib/when_exe/locales/el.rb +2 -2
  36. data/lib/when_exe/locales/en.rb +2 -2
  37. data/lib/when_exe/locales/en_AU.rb +2 -2
  38. data/lib/when_exe/locales/en_CA.rb +2 -2
  39. data/lib/when_exe/locales/en_GB.rb +2 -2
  40. data/lib/when_exe/locales/en_IE.rb +2 -2
  41. data/lib/when_exe/locales/en_IN.rb +3 -3
  42. data/lib/when_exe/locales/en_NZ.rb +2 -2
  43. data/lib/when_exe/locales/en_US.rb +2 -2
  44. data/lib/when_exe/locales/en_ZA.rb +88 -0
  45. data/lib/when_exe/locales/encoding_conversion.rb +126 -0
  46. data/lib/when_exe/locales/eo.rb +2 -2
  47. data/lib/when_exe/locales/es.rb +2 -2
  48. data/lib/when_exe/locales/es_419.rb +2 -2
  49. data/lib/when_exe/locales/es_AR.rb +2 -2
  50. data/lib/when_exe/locales/es_CL.rb +2 -2
  51. data/lib/when_exe/locales/es_CO.rb +2 -2
  52. data/lib/when_exe/locales/es_CR.rb +2 -2
  53. data/lib/when_exe/locales/es_EC.rb +2 -2
  54. data/lib/when_exe/locales/es_MX.rb +2 -2
  55. data/lib/when_exe/locales/es_PA.rb +2 -2
  56. data/lib/when_exe/locales/es_PE.rb +2 -2
  57. data/lib/when_exe/locales/es_US.rb +84 -0
  58. data/lib/when_exe/locales/es_VE.rb +2 -2
  59. data/lib/when_exe/locales/et.rb +2 -2
  60. data/lib/when_exe/locales/eu.rb +2 -2
  61. data/lib/when_exe/locales/fa.rb +2 -2
  62. data/lib/when_exe/locales/fi.rb +3 -3
  63. data/lib/when_exe/locales/fr.rb +2 -2
  64. data/lib/when_exe/locales/fr_CA.rb +2 -2
  65. data/lib/when_exe/locales/fr_CH.rb +2 -2
  66. data/lib/when_exe/locales/gl.rb +2 -2
  67. data/lib/when_exe/locales/he.rb +3 -3
  68. data/lib/when_exe/locales/hi.rb +2 -2
  69. data/lib/when_exe/locales/hi_IN.rb +2 -2
  70. data/lib/when_exe/locales/hr.rb +2 -2
  71. data/lib/when_exe/locales/hu.rb +6 -5
  72. data/lib/when_exe/locales/iast.rb +90 -0
  73. data/lib/when_exe/locales/id.rb +2 -2
  74. data/lib/when_exe/locales/is.rb +2 -2
  75. data/lib/when_exe/locales/it.rb +2 -2
  76. data/lib/when_exe/locales/it_CH.rb +2 -2
  77. data/lib/when_exe/locales/ja.rb +2 -2
  78. data/lib/when_exe/locales/kn.rb +2 -2
  79. data/lib/when_exe/locales/ko.rb +2 -2
  80. data/lib/when_exe/locales/links.rb +3 -3
  81. data/lib/when_exe/locales/lo.rb +2 -2
  82. data/lib/when_exe/{parts → locales}/locale.rb +77 -49
  83. data/lib/when_exe/locales/lt.rb +6 -2
  84. data/lib/when_exe/locales/lv.rb +2 -2
  85. data/lib/when_exe/locales/mk.rb +2 -2
  86. data/lib/when_exe/locales/mn.rb +2 -2
  87. data/lib/when_exe/locales/ms.rb +2 -2
  88. data/lib/when_exe/locales/nb.rb +2 -2
  89. data/lib/when_exe/locales/ne.rb +2 -2
  90. data/lib/when_exe/locales/nl.rb +2 -2
  91. data/lib/when_exe/locales/nn.rb +2 -2
  92. data/lib/when_exe/locales/or.rb +2 -2
  93. data/lib/when_exe/locales/pl.rb +2 -2
  94. data/lib/when_exe/locales/pt.rb +2 -2
  95. data/lib/when_exe/locales/pt_BR.rb +2 -2
  96. data/lib/when_exe/locales/rm.rb +2 -2
  97. data/lib/when_exe/locales/ro.rb +2 -2
  98. data/lib/when_exe/locales/ru.rb +2 -2
  99. data/lib/when_exe/locales/sk.rb +2 -2
  100. data/lib/when_exe/locales/sl.rb +2 -2
  101. data/lib/when_exe/locales/sr.rb +2 -2
  102. data/lib/when_exe/locales/sv.rb +2 -2
  103. data/lib/when_exe/locales/sw.rb +2 -2
  104. data/lib/when_exe/locales/ta.rb +95 -0
  105. data/lib/when_exe/locales/th.rb +2 -2
  106. data/lib/when_exe/locales/tl.rb +3 -3
  107. data/lib/when_exe/locales/tr.rb +2 -2
  108. data/lib/when_exe/locales/transliteration_table.rb +62 -0
  109. data/lib/when_exe/locales/uk.rb +15 -15
  110. data/lib/when_exe/locales/ur.rb +2 -2
  111. data/lib/when_exe/locales/uz.rb +2 -2
  112. data/lib/when_exe/locales/vi.rb +2 -2
  113. data/lib/when_exe/locales/wo.rb +2 -2
  114. data/lib/when_exe/locales/zh_CN.rb +2 -2
  115. data/lib/when_exe/locales/zh_HK.rb +15 -15
  116. data/lib/when_exe/locales/zh_TW.rb +2 -2
  117. data/lib/when_exe/locales/zh_YUE.rb +77 -0
  118. data/lib/when_exe/mini_application.rb +22 -12
  119. data/lib/when_exe/parts/geometric_complex.rb +16 -1
  120. data/lib/when_exe/parts/method_cash.rb +184 -238
  121. data/lib/when_exe/parts/resource.rb +65 -16
  122. data/lib/when_exe/region/armenian.rb +56 -0
  123. data/lib/when_exe/region/bahai.rb +13 -13
  124. data/lib/when_exe/region/balinese.rb +33 -35
  125. data/lib/when_exe/region/chinese.rb +82 -78
  126. data/lib/when_exe/region/{chinese_calendar.rb → chinese/calendars.rb} +59 -40
  127. data/lib/when_exe/region/{chinese_epoch.rb → chinese/epochs.rb} +3 -4
  128. data/lib/when_exe/region/{chinese_twin.rb → chinese/twins.rb} +48 -51
  129. data/lib/when_exe/region/christian.rb +236 -127
  130. data/lib/when_exe/region/coptic.rb +9 -10
  131. data/lib/when_exe/region/dee.rb +48 -0
  132. data/lib/when_exe/region/discordian.rb +225 -0
  133. data/lib/when_exe/region/far_east.rb +2 -6
  134. data/lib/when_exe/region/french.rb +7 -17
  135. data/lib/when_exe/region/geologicalage.rb +0 -1
  136. data/lib/when_exe/region/goddess.rb +58 -0
  137. data/lib/when_exe/region/indian.rb +323 -231
  138. data/lib/when_exe/region/iranian.rb +159 -22
  139. data/lib/when_exe/region/islamic.rb +7 -9
  140. data/lib/when_exe/region/japanese.rb +14 -803
  141. data/lib/when_exe/region/japanese/calendars.rb +397 -0
  142. data/lib/when_exe/region/japanese/epochs.rb +426 -0
  143. data/lib/when_exe/region/{nihon_shoki.rb → japanese/nihon_shoki.rb} +0 -2
  144. data/lib/when_exe/region/{japanese_notes.rb → japanese/notes.rb} +179 -150
  145. data/lib/when_exe/region/japanese/residues.rb +1306 -0
  146. data/lib/when_exe/region/{japanese_twin.rb → japanese/twins.rb} +12 -15
  147. data/lib/when_exe/region/javanese.rb +16 -14
  148. data/lib/when_exe/region/jewish.rb +8 -9
  149. data/lib/when_exe/region/korean.rb +146 -35
  150. data/lib/when_exe/region/m17n.rb +8 -10
  151. data/lib/when_exe/region/martian.rb +44 -16
  152. data/lib/when_exe/region/mayan.rb +12 -10
  153. data/lib/when_exe/region/pope.rb +0 -1
  154. data/lib/when_exe/region/residue.rb +4 -5
  155. data/lib/when_exe/region/roman.rb +20 -24
  156. data/lib/when_exe/region/ryukyu.rb +3 -4
  157. data/lib/when_exe/region/shire.rb +97 -94
  158. data/lib/when_exe/region/symmetry.rb +50 -0
  159. data/lib/when_exe/region/thai.rb +164 -56
  160. data/lib/when_exe/region/tibetan.rb +86 -86
  161. data/lib/when_exe/region/vietnamese.rb +9 -12
  162. data/lib/when_exe/region/weekdate.rb +80 -0
  163. data/lib/when_exe/region/world.rb +65 -70
  164. data/lib/when_exe/region/yerm.rb +98 -0
  165. data/lib/when_exe/region/zoroastrian.rb +203 -0
  166. data/lib/when_exe/timestandard.rb +4 -4
  167. data/lib/when_exe/tmobjects.rb +1 -3
  168. data/lib/when_exe/tmposition.rb +13 -12
  169. data/lib/when_exe/tmreference.rb +11 -10
  170. data/lib/when_exe/version.rb +1 -1
  171. data/link_to_online_documents +3 -3
  172. data/test/examples/Residue.m17n +1 -1
  173. data/test/examples/Terms.m17n +1 -1
  174. data/test/test.rb +2 -1
  175. data/test/test/basictypes.rb +18 -2
  176. data/test/test/calendarnote.rb +1 -1
  177. data/test/test/calendartypes.rb +1 -1
  178. data/test/test/coordinates.rb +7 -7
  179. data/test/test/{region → ephemeris}/moon.rb +0 -0
  180. data/test/test/{region → ephemeris}/planets.rb +0 -0
  181. data/test/test/{region → ephemeris}/sun.rb +0 -0
  182. data/test/test/parts.rb +8 -13
  183. data/test/test/region/christian.rb +245 -0
  184. data/test/test/region/french.rb +16 -16
  185. data/test/test/region/iran.rb +34 -34
  186. data/test/test/region/japanese.rb +6 -4
  187. data/test/test/region/m17n.rb +8 -7
  188. data/test/test/region/mayan.rb +12 -12
  189. data/test/test/region/residue.rb +20 -4
  190. data/test/test/region/thai.rb +25 -3
  191. data/test/test/region/yerm.rb +146 -0
  192. metadata +39 -20
  193. data/lib/when_exe/region/japanese_residues.rb +0 -1212
  194. data/test/test/region/civil.rb +0 -124
@@ -11,7 +11,6 @@ class When::TM::CalendarEra
11
11
  # 皇紀
12
12
  #
13
13
  NihonKoki = [self, [
14
- "namespace:[ja=http://ja.wikipedia.org/wiki/, en=http://en.wikipedia.org/wiki/]",
15
14
  "locale:[=ja:, en=en:, alias]",
16
15
  "area:[日本]",
17
16
  ["[皇紀]1", "@A", "-659-01-01^JapaneseTwin::平朔儀鳳暦"],
@@ -24,7 +23,6 @@ class When::TM::CalendarEra
24
23
  # 日本書紀暦日
25
24
  #
26
25
  NihonShoki = [self, [
27
- "namespace:[ja=http://ja.wikipedia.org/wiki/, en=http://en.wikipedia.org/wiki/]",
28
26
  "locale:[=ja:, en=en:, alias]",
29
27
  "period:[(日本書紀)=ja:%%<日本書紀>, (Nihon_Shoki)=en:Nihon_Shoki]",
30
28
  ["[神武]1", "@A", "name=[神武];-659-01-01^JapaneseTwin::平朔儀鳳暦"],
@@ -5,15 +5,15 @@
5
5
  You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
6
  =end
7
7
 
8
- require 'when_exe/region/ephemeric_notes'
9
- require 'when_exe/region/japanese_residues'
8
+ require 'when_exe/ephemeris/notes'
9
+ require 'when_exe/region/japanese/residues'
10
10
 
11
11
  class When::CalendarNote
12
12
 
13
13
  #
14
14
  # 日本暦注
15
15
  #
16
- class JapaneseNote < self
16
+ class Japanese < self
17
17
 
18
18
  #
19
19
  # 日本暦注が使用する暦法
@@ -36,8 +36,7 @@ class When::CalendarNote
36
36
  #
37
37
  # 日本暦注の要素
38
38
  #
39
- NoteObjects = [When::BasicTypes::M17n, [
40
- "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
39
+ Notes = [When::BasicTypes::M17n, [
41
40
  "locale:[=ja:, en=en:]",
42
41
  "names:[日本暦注]",
43
42
 
@@ -137,139 +136,141 @@ class When::CalendarNote
137
136
  [Note, 0xF800, "label:[初午]", 'position:雑節'], # 14: 支 節月 or 暦月
138
137
  [Note, 0xF800, "label:[八十八夜]", 'position:雑節'], # 15: 立春からの日数
139
138
  [Note, 0xF800, "label:[入梅]", 'position:雑節'], # 16: 干 太陽黄経
140
- [Note, 0xF800, "label:[二百十日]", 'position:雑節'], # 17: 立春からの日数
141
- [Note, 0xF800, "label:[二百廿日]", 'position:雑節'], # 18: 立春からの日数
139
+ [Note, 0xF800, "label:[半夏生]", 'position:雑節'], # 17: 干 太陽黄経
140
+ [Note, 0xF800, "label:[二百十日]", 'position:雑節'], # 18: 立春からの日数
141
+ [Note, 0xF800, "label:[二百廿日]", 'position:雑節'], # 19: 立春からの日数
142
142
 
143
143
  [Note, 0x3FFC, "label:[大禍=ja:%%<暦注下段>#%.<大禍日>]",
144
- 'position:上段 上段 欄外 欄外', 'suffix:日'], # 19: 支 節月
145
- [Note, 0x3FFC, "label:[滅門=ja:%%<暦注下段>#%.<滅門日>]",
146
144
  'position:上段 上段 欄外 欄外', 'suffix:日'], # 20: 支 節月
147
- [Note, 0x3FFC, "label:[狼藉=ja:%%<暦注下段>#%.<狼藉日>]",
145
+ [Note, 0x3FFC, "label:[滅門=ja:%%<暦注下段>#%.<滅門日>]",
148
146
  'position:上段 上段 欄外 欄外', 'suffix:日'], # 21: 支 節月
147
+ [Note, 0x3FFC, "label:[狼藉=ja:%%<暦注下段>#%.<狼藉日>]",
148
+ 'position:上段 上段 欄外 欄外', 'suffix:日'], # 22: 支 節月
149
149
 
150
- [Note, 0x07F8, "label:[甘露=]", 'position:上段 上段 上段 上段', 'suffix:日'], # 22: 七曜 廿七宿
151
- [Note, 0x07F8, "label:[金剛峯=]", 'position:上段 上段 上段 上段'], # 23: 七曜 廿七宿
152
- [Note, 0x07F8, "label:[羅刹=]", 'position:上段 上段 上段 上段'], # 24: 七曜 廿七宿
150
+ [Note, 0x07F8, "label:[甘露=]", 'position:上段 上段 上段 上段', 'suffix:日'], # 23: 七曜 廿七宿
151
+ [Note, 0x07F8, "label:[金剛峯=]", 'position:上段 上段 上段 上段'], # 24: 七曜 廿七宿
152
+ [Note, 0x07F8, "label:[羅刹=]", 'position:上段 上段 上段 上段'], # 25: 七曜 廿七宿
153
153
 
154
154
  [Note, 0x3FFC, "label:[大將軍=ja:%%<大将軍_(方位神)>]",
155
- 'position:上段 上段 上段 上段', 'suffix:-'], # 25: 干支 節年
155
+ 'position:上段 上段 上段 上段', 'suffix:-'], # 26: 干支 節年
156
156
  [Note, 0xFFFC, "label:[天一=ja:%%<天一神>]",
157
- 'position:上段 上段 上段 上段', 'suffix:-'], # 26: 干支
158
- [Note, 0x3FFC, "label:[土公=ja:%%<土公神>]",
159
157
  'position:上段 上段 上段 上段', 'suffix:-'], # 27: 干支
158
+ [Note, 0x3FFC, "label:[土公=ja:%%<土公神>]",
159
+ 'position:上段 上段 上段 上段', 'suffix:-'], # 28: 干支
160
160
  [Note, 0x3FFC, "label:[歳下食=ja:%%<暦注下段>#%.<歳下食>]",
161
- 'position:上段 上段 上段 上段'], # 28: 干支 節年
162
- [Note, 0x3FFC, "label:[忌遠行=]", 'position:上段 上段 上段 上段'], # 29: 支 節月
163
- [Note, 0x3FFC, "label:[忌夜行=]", 'position:上段 上段 上段 上段'], # 30: 支 節月
161
+ 'position:上段 上段 上段 上段'], # 29: 干支 節年
162
+ [Note, 0x3FFC, "label:[忌遠行=]", 'position:上段 上段 上段 上段'], # 30: 支 節月
163
+ [Note, 0x3FFC, "label:[忌夜行=]", 'position:上段 上段 上段 上段'], # 31: 支 節月
164
164
  [Note, 0x3FFC, "label:[下食時=ja:%%<暦注下段>#%.<時下食>]",
165
- 'position:上段 上段 上段 上段', 'suffix:-'], # 31: 支 節月 貞享暦で一部廃止
166
- [Note, 0x3FFC, "label:[天間=]", 'position:上段 上段 上段 中段上'], # 32: 干支 節月
167
- [Note, 0x3FFC, "label:[不視病=]", 'position:上段 上段 上段 上段'], # 33: 干
168
- [Note, 0x3FFC, "label:[不問疾=]", 'position:上段 上段 上段 上段'], # 34: 干
169
- [Note, 0x3FFC, "label:[不弔人=]", 'position:上段 上段 上段 上段'], # 35: 支
170
- [Note, 0xFFFC, "label:[彼岸]", 'position:仮名暦'], # 36: 太陽黄経
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
171
  [Note, 0xFFFF, "label:[社=ja:%%<社日>]",
172
- 'position:中段 中段 中段 中段', 'suffix:日'], # 37: 干 太陽黄経
173
- [Note, 0xFFFF, "label:[三伏]", 'position:中段 中段 中段 中段'], # 38: 干 太陽黄経
174
- [Note, 0x3FFC, "label:[除手足甲=]", 'position:中段 中段 中段 中段'], # 39: 晦(除手足甲)、支(片方のみ), 没滅凶会日×
175
- [Note, 0x3FFC, "label:[沐浴=]", 'position:中段 中段 中段 中段'], # 40: 支 没滅凶会日×
172
+ 'position:中段 中段 中段 中段', 'suffix:日'], # 38: 干 太陽黄経
173
+ [Note, 0xFFFF, "label:[三伏]", 'position:中段 中段 中段 中段'], # 39: 干 太陽黄経
174
+ [Note, 0x3FFC, "label:[除手足甲=]", 'position:中段 中段 中段 中段'], # 40: 晦(除手足甲)、支(片方のみ), 没滅凶会日×
175
+ [Note, 0x3FFC, "label:[沐浴=]", 'position:中段 中段 中段 中段'], # 41: 支 没滅凶会日×
176
176
  [Note, 0x3FFD, "label:[臘=ja:%%<臘日>]",
177
- 'position:中段 中段 中段 中段', 'suffix:日'], # 41: 支 太陽黄経
178
- [Note, 0x3FFC, "label:[伐=]", 'position:中段 中段 中段 中段上', 'suffix:日'], # 42: 干支
177
+ 'position:中段 中段 中段 中段', 'suffix:日'], # 42: 支 太陽黄経
178
+ [Note, 0x3FFC, "label:[伐=]", 'position:中段 中段 中段 中段上', 'suffix:日'], # 43: 干支
179
179
  [Note, 0x3FFC, "label:[五墓=ja:%%<暦注下段>#%.<五墓日>]",
180
- 'position:中段 中段 中段 中段下', 'suffix:日'], # 43: 干支
181
- [Note, 0x3FFC, "label:[六蛇=]", 'position:中段 中段 中段 中段上'], # 44: 干支 節月
182
- [Note, 0x3FFC, "label:[七鳥=]", 'position:中段 中段 中段 中段上'], # 45: 干支 節月
183
- [Note, 0x3FFC, "label:[八龍=]", 'position:中段 中段 中段 中段上'], # 46: 干支 節月
184
- [Note, 0x3FFC, "label:[九虎=]", 'position:中段 中段 中段 中段上'], # 47: 干支 節月
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
185
  [Note, 0x07FF, "label:[没=ja:%%<没日>]",
186
- 'position:中段 中段 中段 中段', 'suffix:日'], # 48: 太陽黄経
187
- [Note, 0xFFF8, "label:[日食]", 'position:中段 中段 中段 中段'], # 49: 日食表
186
+ 'position:中段 中段 中段 中段', 'suffix:日'], # 49: 太陽黄経
187
+ [Note, 0xFFF8, "label:[日食]", 'position:中段 中段 中段 中段'], # 50: 日食表
188
188
  [Note, 0x07FC, "label:[滅=ja:%%<滅日]",
189
- 'position:中段 中段 中段 中段', 'suffix:日'], # 50: 月の位相
190
- [Note, 0xFFF8, "label:[月食]", 'position:中段 中段 中段 中段'], # 51: 月食表
191
- [Note, 0xC7FD, "label:[月相]", 'position:中段 中段 中段 中段'], # 52: 月の位相
189
+ 'position:中段 中段 中段 中段', 'suffix:日'], # 51: 月の位相
190
+ [Note, 0xFFF8, "label:[月食]", 'position:中段 中段 中段 中段'], # 52: 月食表
191
+ [Note, 0xC7FD, "label:[月相]", 'position:中段 中段 中段 中段'], # 53: 月の位相
192
192
  [Note, 0xFFFF, "label:[土用事=ja:%%<土用>]",
193
- 'position:中段 中段 中段 中段'], # 53: 太陽黄経
194
- [Note, 0x3FF0, "label:[伏龍=]", 'position:上段 上段 下段 下段', 'suffix:在'], # 54: 太陽黄経
193
+ 'position:中段 中段 中段 中段'], # 54: 太陽黄経
194
+ [Note, 0x3FF0, "label:[伏龍=]", 'position:上段 上段 下段 下段', 'suffix:在'], # 55: 太陽黄経
195
195
 
196
196
  [Note, 0x3FFF, "label:[凶会=ja:%%<暦注下段>#%.<凶会日>]",
197
- 'position:下段 下段 下段 下段', 'suffix:日'], # 55: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
198
- [Note, 0x3FFF, "label:[大小歳=]", 'position:下段 下段 下段 下段'], # 56: 干支 節月
197
+ 'position:下段 下段 下段 下段', 'suffix:日'], # 56: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
198
+ [Note, 0x3FFF, "label:[大小歳=]", 'position:下段 下段 下段 下段'], # 57: 干支 節月
199
199
  [Note, 0x3FFC, "label:[歳徳=ja:%%<歳徳神>]",
200
- 'position:下段 下段 下段 下段'], # 57: 干 節年 凶会日× ~合も
201
- [Note, 0x0003, "label:[天倉=]", 'position:古注'], # 58: 干支 節月
200
+ 'position:下段 下段 下段 下段'], # 58: 干 節年 凶会日× ~合も
201
+ [Note, 0x0003, "label:[天倉=]", 'position:古注'], # 59: 干支 節月
202
202
  # [Note, 0x0003, "label:[天李=]", 'position:古注'], # 干支 節月?
203
203
  [Note, 0x37FF, "label:[天恩=ja:%%<暦注下段>#%.<天恩日>]",
204
- 'position:下段 下段 下段 下段', 'suffix:日'], # 59: 干支 節月 凶会日×
204
+ 'position:下段 下段 下段 下段', 'suffix:日'], # 60: 干支 節月 凶会日×
205
205
  [Note, 0xFFFF, "label:[天赦=ja:%%<暦注下段>#%.<天赦日>]",
206
- 'position:下段 下段 下段 下段'], # 60: 干支 節月
206
+ 'position:下段 下段 下段 下段'], # 61: 干支 節月
207
207
  [Note, 0x37FF, "label:[母倉=ja:%%<暦注下段>#%.<母倉日>]",
208
- 'position:下段 下段 下段 下段', 'suffix:日'], # 61: 支 節月 凶会日×
209
- [Note, 0x37FC, "label:[月徳=]", 'position:下段 下段 下段 下段'], # 62: 干 節月 凶会日× ~合も
210
- [Note, 0x3FFF, "label:[九坎=]", 'position:下段 下段 下段 下段'], # 63: 支 節月
208
+ 'position:下段 下段 下段 下段', 'suffix:日'], # 62: 支 節月 凶会日×
209
+ [Note, 0x37FC, "label:[月徳=]", 'position:下段 下段 下段 下段'], # 63: 干 節月 凶会日× ~合も
210
+ [Note, 0x3FFF, "label:[九坎=]", 'position:下段 下段 下段 下段'], # 64: 支 節月
211
211
  [Note, 0x3FFF, "label:[歸忌=ja:%%<暦注下段>#%.<帰忌日>]",
212
- 'position:下段 下段 下段 下段', 'suffix:日'], # 64: 支 節月
213
- [Note, 0x3FFF, "label:[血忌=ja:%%<暦注下段>#%.<血忌日>]",
214
212
  'position:下段 下段 下段 下段', 'suffix:日'], # 65: 支 節月
215
- [Note, 0x3FFC, "label:[無翹=]", 'position:下段 下段 下段 下段'], # 66: 支 節月
216
- [Note, 0x3FFF, "label:[厭=]", 'position:下段 下段 下段 下段'], # 67: 支 節月
213
+ [Note, 0x3FFF, "label:[血忌=ja:%%<暦注下段>#%.<血忌日>]",
214
+ 'position:下段 下段 下段 下段', 'suffix:日'], # 66: 支 節月
215
+ [Note, 0x3FFC, "label:[無翹=]", 'position:下段 下段 下段 下段'], # 67: 支 節月
216
+ [Note, 0x3FFF, "label:[厭=]", 'position:下段 下段 下段 下段'], # 68: 支 節月
217
217
  [Note, 0x3FFC, "label:[重=ja:%%<暦注下段>#%.<重日>]",
218
- 'position:下段 下段 下段 下段', 'suffix:日'], # 68: 支
218
+ 'position:下段 下段 下段 下段', 'suffix:日'], # 69: 支
219
219
  [Note, 0x3FFD, "label:[復=ja:%%<暦注下段>#%.<復日>]",
220
- 'position:下段 下段 下段 下段', 'suffix:日'], # 69: 干 節月
221
- [Note, 0x3FFC, "label:[月煞=]", 'position:下段 下段 下段 下段'], # 70: 支 節月
220
+ 'position:下段 下段 下段 下段', 'suffix:日'], # 70: 干 節月
221
+ [Note, 0x3FFC, "label:[月煞=]", 'position:下段 下段 下段 下段'], # 71: 支 節月
222
222
  [Note, 0x3FFF, "label:[往亡=ja:%%<暦注下段>#%.<往亡日>]",
223
- 'position:下段 下段 下段 下段', 'suffix:日'], # 71: 太陽黄経
223
+ 'position:下段 下段 下段 下段', 'suffix:日'], # 72: 太陽黄経
224
224
  [Note, 0x3FFF, "label:[日遊=ja:%%<日遊神>]",
225
- 'position:最下段', 'suffix:在'], # 72: 干支
226
- [Note, 0x07FF, "label:[人神配当=]", 'position:最下段孟月', 'suffix:-'], # 73: 暦日
225
+ 'position:最下段', 'suffix:在'], # 73: 干支
226
+ [Note, 0x07FF, "label:[人神配当=]", 'position:最下段孟月', 'suffix:-'], # 74: 暦日
227
227
 
228
228
  [Note, 0x3E00, "label:[受死=ja:%%<暦注下段>#%.<受死日>]",
229
- 'position:仮名暦', 'suffix:日'], # 74: 支 節月
230
- [Note, 0xFFF0, "label:[八專]", 'position:仮名暦'], # 75: 干支
229
+ 'position:仮名暦', 'suffix:日'], # 75: 支 節月
230
+ [Note, 0xFFF0, "label:[八專]", 'position:仮名暦'], # 76: 干支
231
231
  [Note, 0x3E00, "label:[八專間日=ja:%%<八専>]",
232
- 'position:仮名暦'], # 76: 干支
232
+ 'position:仮名暦'], # 77: 干支
233
233
  [Note, 0xC000, "label:[金神間日=ja:%%<金神>#%.<金神の遊行・間日>]",
234
- 'position:仮名暦'], # 77: 支 節月
235
- [Note, 0xC000, "label:[金神遊行=ja:%%<金神>#%.<金神の遊行・間日>]",
236
234
  'position:仮名暦'], # 78: 支 節月
235
+ [Note, 0xC000, "label:[金神遊行=ja:%%<金神>#%.<金神の遊行・間日>]",
236
+ 'position:仮名暦'], # 79: 支 節月
237
237
  [Note, 0x3FF0, "label:[天火=ja:%%<暦注下段>#%.<天火日>]",
238
- 'position:仮名暦', 'suffix:日'], # 79: 支 節月
239
- [Note, 0x3FF0, "label:[地火=ja:%%<暦注下段>#%.<地火日>]",
240
238
  'position:仮名暦', 'suffix:日'], # 80: 支 節月
241
- [Note, 0x3800, "label:[人火=]", 'position:仮名暦'], # 81: 支 節月
242
- [Note, 0x3800, "label:[雷火=]", 'position:仮名暦'], # 82: 支 節月
239
+ [Note, 0x3FF0, "label:[地火=ja:%%<暦注下段>#%.<地火日>]",
240
+ 'position:仮名暦', 'suffix:日'], # 81: 支 節月
241
+ [Note, 0x3800, "label:[人火=]", 'position:仮名暦'], # 82: 支 節月
242
+ [Note, 0x3800, "label:[雷火=]", 'position:仮名暦'], # 83: 支 節月
243
243
  [Note, 0x3FF0, "label:[赤舌=ja:%%<赤舌日>]",
244
- 'position:仮名暦', 'suffix:日'], # 83: 暦月 暦日
244
+ 'position:仮名暦', 'suffix:日'], # 84: 暦月 暦日
245
245
  [Note, 0x3E00, "label:[十死=ja:%%<暦注下段>#%.<十死日>]",
246
- 'position:仮名暦', 'suffix:日'], # 84: 支 節月
247
- [Note, 0x3E00, "label:[道虚=]", 'position:仮名暦', 'suffix:日'], # 85: 暦日
246
+ 'position:仮名暦', 'suffix:日'], # 85: 支 節月
247
+ [Note, 0x3E00, "label:[道虚=]", 'position:仮名暦', 'suffix:日'], # 86: 暦日
248
248
  [Note, 0x3E00, "label:[大明=ja:%%<暦注下段>#%.<大明日>]",
249
- 'position:仮名暦', 'suffix:日'], # 86: 干支
249
+ 'position:仮名暦', 'suffix:日'], # 87: 干支
250
250
  [Note, 0x0600, "label:[大赤=ja:%%<赤口日>]",
251
- 'position:仮名暦', 'suffix:日'], # 87: 暦月 暦日
251
+ 'position:仮名暦', 'suffix:日'], # 88: 暦月 暦日
252
252
  [Note, 0xF800, "label:[甲子待=ja:%%<甲子>]",
253
- 'position:仮名暦'], # 88: 干支
254
- [Note, 0xC000, "label:[己巳]", 'position:仮名暦'], # 89: 干支
255
- [Note, 0xF800, "label:[庚申待]", 'position:仮名暦'], # 90: 干支
256
- [Note, 0x3800, "label:[犯土]", 'position:仮名暦'], # 91: 干支
257
- [Note, 0xF800, "label:[十方暮]", 'position:仮名暦'], # 92: 干支
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
258
  [Note, 0xF800, "label:[一粒万倍=ja:%%<一粒万倍日>]",
259
- 'position:仮名暦', 'suffix:日'], # 93: 支 節月
260
- [Note, 0x3800, "label:[天福=]", 'position:仮名暦'], # 94: 支 節月
261
- [Note, 0x3800, "label:[地福=]", 'position:仮名暦'], # 95: 支 節月
262
- [Note, 0x3800, "label:[地五福=]", 'position:仮名暦'], # 96: 支 節月
263
- [Note, 0xB800, "label:[三隣亡]", 'position:仮名暦'], # 97: 支 節月
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
264
  [Note, 0xF800, "label:[不成就=ja:%%<不成就日>]",
265
- 'position:仮名暦', 'suffix:日'], # 98: 暦月 暦日/晦日
265
+ 'position:仮名暦', 'suffix:日'], # 99: 暦月 暦日/晦日
266
+ [Note, 0x3800, "label:[鬼宿]", 'position:仮名暦'], #100: 廿八宿
267
+ [Note, 0x3800, "label:[金性=]", 'position:仮名暦'], #101: 支 節月 支 節年
266
268
  [Note, 0x3FFF, "label:[三寶吉=ja:%%<三宝吉>]",
267
- 'position:上段 上段 上段 上段'], # 99: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
269
+ 'position:上段 上段 上段 上段'], #102: 干支 節月
268
270
  [Note, 0x3FFF, "label:[神吉=ja:%%<暦注下段>#%.<神日>]",
269
- 'position:上段 上段 中段 中段上', 'suffix:日'], #100: 干支 節月
270
- [Note, 0x3FFF, "label:[雑事吉=]", 'position:雑事吉'], #101: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
271
- [Note, 0x07FF, "label:[小字注=]", 'position:下段小字 下段小字 下段小字 下段小字'],#102: 干支 節月(宣明暦以前)/暦月(貞享暦以降)
272
- [Note, 0x3800, "label:[鬼宿]", 'position:仮名暦'], #103: 廿八宿
271
+ 'position:上段 上段 中段 中段上', 'suffix:日'], #103: 干支 節月
272
+ [Note, 0x3FFF, "label:[雑事吉=]", 'position:雑事吉'], #104: 干支 節月
273
+ [Note, 0x3FFF, "label:[小字注=]", 'position:下段小字 下段小字 下段小字 下段小字'],#105: 干支 節月
273
274
  ]
274
275
  ]]
275
276
 
@@ -277,10 +278,10 @@ class When::CalendarNote
277
278
  # 日本暦注の時代変遷
278
279
  #
279
280
  # @private
280
- NoteTypes = (3...When::TM::CalendarEra::JapaneseSolarSeries[1].size).to_a.map {|i|
281
+ NoteTypes = (2...When::TM::CalendarEra::JapaneseSolar[1].size).to_a.map {|i|
281
282
  calendars =
282
- [When::TM::CalendarEra::JapaneseLuniSolarSeries[1][i][2],
283
- When::TM::CalendarEra::JapaneseSolarSeries[1][i][2]].map {|epoch|
283
+ [When::TM::CalendarEra::JapaneseLuniSolar[1][i][2],
284
+ When::TM::CalendarEra::JapaneseSolar[1][i][2]].map {|epoch|
284
285
  epoch =~ /^(-?\d+)-(\d+)-(\d+)\^(.+)$/
285
286
  $4
286
287
  }
@@ -310,8 +311,8 @@ class When::CalendarNote
310
311
 
311
312
  # @private
312
313
  NoteFocused = (0...NoteRange.size).to_a.map {|range|
313
- (3..5).to_a.map {|cord|
314
- notes = NoteObjects[1][cord]
314
+ (2..4).to_a.map {|cord|
315
+ notes = Notes[1][cord]
315
316
  (2...notes.size).to_a.inject([]) {|focused,note|
316
317
  focused << notes[note][2][/\[.+?[=\]]/][1..-2] if notes[note][1][range] == 1
317
318
  focused
@@ -332,6 +333,24 @@ class When::CalendarNote
332
333
  -31 => '大'
333
334
  }
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
+
335
354
  #
336
355
  # 日本暦注が使用する暦法
337
356
  #
@@ -348,11 +367,11 @@ class When::CalendarNote
348
367
  end
349
368
 
350
369
  def l_phases
351
- @l_phases ||= JapaneseNote::LunarPhases.new('formula'=>l_calendar.formula[-1])
370
+ @l_phases ||= Japanese::LunarPhases.new('formula'=>l_calendar.formula[-1])
352
371
  end
353
372
 
354
373
  def s_terms
355
- @s_terms ||= JapaneseNote::SolarTerms.new('formula'=>s_calendar.formula[0])
374
+ @s_terms ||= Japanese::SolarTerms.new('formula'=>s_calendar.formula[0])
356
375
  end
357
376
 
358
377
  def doyo
@@ -361,7 +380,7 @@ class When::CalendarNote
361
380
  end
362
381
 
363
382
  #
364
- # 日本暦注用の NoteObjects の要素のための内部クラス
383
+ # 日本暦注用の Notes の要素のための内部クラス
365
384
  #
366
385
  # @private
367
386
  class Note
@@ -453,13 +472,13 @@ class When::CalendarNote
453
472
  # @return [Array<Hash>] 上記に該当せず、:indices が Integer の場合
454
473
  # @return [Array<Array<Hash>>] 上記のいずれにも該当しない場合
455
474
  # @note return 値の [Hash] の要素は下記の通り
456
- # :note => 暦注要素 (When::CalendarTypes::JapaneseNote::Note)
475
+ # :note => 暦注要素 (When::CalendarTypes::Japanese::Note)
457
476
  # :value => 暦注の値 (String or When::BasicTypes::M17n または、その Array)
458
477
  # :position => 具注暦でのその暦注の配置場所(String)
459
478
  #
460
479
  def notes(date, options={})
461
480
  dates, indices, notes, persistence, conditions, options = _parse_note(date, options)
462
- Notes.register(indices.map {|i|
481
+ NotesContainer.register(indices.map {|i|
463
482
  next [] unless i <= dates.precision
464
483
  send(NoteMethods[i-1], dates, notes[i-1], conditions)
465
484
  }, persistence, date.to_i)
@@ -474,13 +493,12 @@ class When::CalendarNote
474
493
  #
475
494
  # den 分母 (デフォルト 360 : 検索範囲の長さ)
476
495
  #
477
- # @param [String] parameter 太陽の位置の分子と分母("#{ num }/#{ den }" の形式)
496
+ # @param [String] parameter 太陽の位置の分子と分母("#{ num }/#{ den }" の形式, デフォルト 0(春分))
478
497
  # @param [Integer] precision 取得したい時間位置の分解能(デフォルト date の分解能)
479
- # @param [When::TM::Calendar] frame 暦法(ダミー)
480
498
  #
481
499
  # @return [When::TM::CalDate] date またはその直後に太陽の位置が指定の値になる日時
482
500
  #
483
- def term(date, parameter=nil, precision=date.precision, frame=nil)
501
+ def term(date, parameter=nil, precision=date.precision)
484
502
  dates = _to_date_for_note(date)
485
503
  result = dates.cal4note.s_terms.term(date, parameter)
486
504
  patch = SolarTerms::Patch[result.to_i]
@@ -490,7 +508,7 @@ class When::CalendarNote
490
508
  den = (den || 360).to_f
491
509
  diff = (num - patch[0] + 1) % den - 1
492
510
  return result if diff == 0
493
- patched = result + When::DurationP1D * diff
511
+ patched = result + When::P1D * diff
494
512
  result.cal_date[0..-2] = patched.cal_date[0..-2]
495
513
  result.cal_date[-1] = When::Coordinates::Pair.new(patched.cal_date[-1], -diff)
496
514
  result
@@ -505,34 +523,32 @@ class When::CalendarNote
505
523
  #
506
524
  # den 分母 (デフォルト 30 : 検索範囲の長さ)
507
525
  #
508
- # @param [String] parameter 月の位相の分子と分母("#{ num }/#{ den }" の形式)
526
+ # @param [String] parameter 月の位相の分子と分母("#{ num }/#{ den }" の形式, デフォルト 0(朔))
509
527
  # @param [Integer] precision 取得したい時間位置の分解能(デフォルト date の分解能)
510
- # @param [When::TM::Calendar] frame 暦法(ダミー)
511
528
  #
512
529
  # @return [When::TM::CalDate] date またはその直後に月の位相が指定の値になる日時
513
530
  #
514
- def phase(date, parameter=nil, precision=date.precision, frame=nil)
531
+ def phase(date, parameter=nil, precision=date.precision)
515
532
  dates = _to_date_for_note(date)
516
533
  note = dates.cal4note.l_phases
517
534
  result = note.phase(date, parameter)
518
535
  return result if dates.o_date.frame.kind_of?(When::CalendarTypes::Christian)
519
- num, den = parameter.kind_of?(String) ? parameter.split(/\//, 2) : parameter
520
- num = (num || 0).to_f
521
- den = (den || 30).to_f
522
- return result unless den == 30
523
- case num % 30
524
- when 0 # 朔
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 # 朔
525
541
  return result if result.cal_date[-1] == 1
526
542
  diff = result.cal_date[-1] < 15 ? -1 : +1
527
- when 5..25 # 弦、望
543
+ when 0.2..0.8 # 弦、望
528
544
  return result unless note.formula.kind_of?(When::Ephemeris::ChineseTrueLunation)
529
- time = result.kind_of?(When::TM::DateAndTime) ? result : note.phase(date, [num,den], When::SYSTEM)
530
545
  return result if time.clk_time.universal_time >= When::TM::Duration::DAY/4 # 午前6時以降
531
546
  diff = -1
532
- else # その他
547
+ else # その他
533
548
  return result
534
549
  end
535
- patched = result + When::DurationP1D * diff
550
+
551
+ patched = result + When::P1D * diff
536
552
  result.cal_date[0..-2] = patched.cal_date[0..-2]
537
553
  result.cal_date[-1] = When::Coordinates::Pair.new(patched.cal_date[-1], -diff)
538
554
  result
@@ -551,7 +567,7 @@ class When::CalendarNote
551
567
  _note_values(dates, notes, _all_keys[-3], _elements[-3]) do |dates, focused_notes, notes_hash|
552
568
 
553
569
  focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-3]
554
- root = When.Resource('_co:CommonResidue')
570
+ root = When.Resource('_co:Common')
555
571
 
556
572
  # 干支
557
573
  residue = (dates.precision < When::DAY ? dates.o_date : dates.s_date).most_significant_coordinate - 4
@@ -575,7 +591,7 @@ class When::CalendarNote
575
591
  length = -length if dates.o_date.frame.kind_of?(When::CalendarTypes::Christian) # 太陽暦
576
592
  pattern += '閏' if month[When::MONTH] * 0 == 1
577
593
  pattern += MonthPattern[length] || '改'
578
- month += When::DurationP1M
594
+ month += When::P1M
579
595
  end
580
596
  notes_hash['大小'] = "#{pattern}(#{year.length(When::YEAR)})"
581
597
  end
@@ -593,7 +609,7 @@ class When::CalendarNote
593
609
  _note_values(dates, notes, _all_keys[-2], _elements[-2]) do |dates, focused_notes, notes_hash|
594
610
 
595
611
  focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-2]
596
- root = When.Resource('_co:CommonResidue')
612
+ root = When.Resource('_co:Common')
597
613
 
598
614
  # 干支
599
615
  residue = month_stem_branch(dates.precision < When::DAY ? dates.o_date : dates.m_date)
@@ -628,7 +644,7 @@ class When::CalendarNote
628
644
  _note_values(dates, notes, _all_keys[-1], _elements[-1]) do |dates, focused_notes, notes_hash|
629
645
 
630
646
  focused_notes[0..-1] = focused_notes & NoteFocused[dates.range][-1]
631
- root = When.Resource('_co:CommonResidue')
647
+ root = When.Resource('_co:Common')
632
648
 
633
649
  # 干支
634
650
  residue = dates.s_date.to_i-11
@@ -741,6 +757,7 @@ class When::CalendarNote
741
757
  [ 7,-3] => [[2003..2100, '海の日']],
742
758
  [ 7,30] => [[1913..1926, '明治天皇祭']],
743
759
  [ 8, 1] => [[1868..1872, '田実節句']],
760
+ [ 8,11] => [[2016..2100, '山の日']],
744
761
  [ 8,31] => [[1913..1926, '天長節']],
745
762
  [ 9, 9] => [[1868..1872, '重陽節句']],
746
763
  [ 9,15] => [[1966..2002, '敬老の日']],
@@ -872,7 +889,7 @@ class When::CalendarNote
872
889
  足小指 足踝及胸、目下 肝及足 手陽明 足陽明 胸 膝 陰 膝晊 足跌)
873
890
 
874
891
  # 六曜
875
- Rokuyo = When.Resource('_m:JapaneseTerms::六曜')
892
+ Rokuyo = When.Resource('_m:Japanese::六曜')
876
893
 
877
894
  # 月の暦注
878
895
  # @private
@@ -907,7 +924,7 @@ class When::CalendarNote
907
924
  # 除手足甲 & 道虚・人神配当
908
925
  y,m0,d0 = dates.m_date.cal_date
909
926
  misoka = m0 != (dates.m_date + When.Duration('P1D')).cal_date[1] if d0 == 29
910
- notes['除手足甲'] = '除手足甲' if ([6,16,30].include?(d0) || misoka) && !(notes['没'] || notes['滅'] || notes['凶会'])
927
+ notes['除手足甲'] = '除手足甲' if ([6,16,30].include?(d0) || misoka) && !(conditions[:kana] || notes['没'] || notes['滅'] || notes['凶会'])
911
928
  notes['道虚'] = '道虚' if d0 % 6 == 0 || misoka
912
929
  notes['人神配当'] = HumanBody[d0-1]
913
930
 
@@ -923,7 +940,7 @@ class When::CalendarNote
923
940
  #
924
941
  # 月の位相による暦注
925
942
  #
926
- class JapaneseNote::LunarPhases < LunarPhases
943
+ class Japanese::LunarPhases < LunarPhases
927
944
 
928
945
  # 日の暦注
929
946
  # @private
@@ -989,7 +1006,7 @@ class When::CalendarNote
989
1006
  #
990
1007
  # 太陽黄経による暦注
991
1008
  #
992
- class JapaneseNote::SolarTerms < SolarTerms
1009
+ class Japanese::SolarTerms < SolarTerms
993
1010
 
994
1011
  Notes12 = %w(正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月)
995
1012
 
@@ -1167,7 +1184,13 @@ class When::CalendarNote
1167
1184
  2243591 => [149.0, 1], # 永享02(1430).07.25 [149.0, 0] 没 (処暑の前日)
1168
1185
 
1169
1186
  2311770 => [ 29.0, 1], # 元和03(1617).03.18 [ 29.0, 0] 没
1170
- 2311771 => [ 30.0, 0] # 元和03(1617).03.19 [ 30.0, 1] 穀雨
1187
+ 2311771 => [ 30.0, 0], # 元和03(1617).03.19 [ 30.0, 1] 穀雨
1188
+
1189
+ 2396062 => [314.0, 0], # 弘化04(1847).12.30 [315.0, 1] 立春 (計算誤差の補正)
1190
+ 2396063 => [315.0, 1], # 弘化05(1848).01.01 [315.0, 0] 没
1191
+
1192
+ 2397583 => [ 15.0, 1], # 嘉永05(1852).02=15 [ 14.0, 0] 没
1193
+ 2397584 => [ 16.0, 0] # 嘉永05(1852).02=16 [ 15.0, 1] 清明 (計算誤差の補正)
1171
1194
  }
1172
1195
 
1173
1196
  class << self
@@ -1234,11 +1257,19 @@ class When::CalendarNote
1234
1257
  [longitude, motsu]
1235
1258
  if _motsu != 0 && _longitude % 90 == 27
1236
1259
  notes['土用事'] =
1237
- case dates.range
1238
- when 0 ; '土用' # 元嘉暦以前
1239
- when 1 ; '土王' # 麟徳暦
1240
- when 2..10 ; '土用事' # 大衍暦~宣明暦
1241
- else ; '土用入' # 貞享暦以降
1260
+ begin
1261
+ event_name =
1262
+ case dates.range
1263
+ when 0 ; '土用' # 元嘉暦以前
1264
+ when 1 ; '土王' # 麟徳暦
1265
+ when 2..10 ; '土用事' # 大衍暦~宣明暦
1266
+ else ; '土用入' # 貞享暦以降
1267
+ end
1268
+ if conditions[:shoyo]
1269
+ dates.cal4note.s_terms.event_time(date, event_name, [27-(dates.cal4note.doyo||0), 90])
1270
+ else
1271
+ event_name
1272
+ end
1242
1273
  end
1243
1274
  end
1244
1275
  end
@@ -1261,6 +1292,11 @@ class When::CalendarNote
1261
1292
  end
1262
1293
  end
1263
1294
 
1295
+ # 半夏生
1296
+ #
1297
+ # 太陽黄経100度
1298
+ notes['半夏生'] ||= '半夏生' if longitude == 100 && motsu == 1
1299
+
1264
1300
  # 立春を起算日とする雑節
1265
1301
  #
1266
1302
  unless notes['節分'] && notes['八十八夜'] && notes['二百十日'] && notes['二百廿日']
@@ -1292,21 +1328,9 @@ class When::CalendarNote
1292
1328
  notes['節中'] ||= Notes12[div] + %w(節 中)[mod]
1293
1329
  notes['廿四節気'] ||=
1294
1330
  begin
1295
- root = When.Resource(dates.range == 1 ? '_co:CommonResidue?V=0618' : '_co:CommonResidue')
1296
- residue = root['二十四節気::*'][(note-3) % 24]
1331
+ residue = When.Resource(dates.range == 1 ? '_co:Common?V=0618' : '_co:Common')['二十四節気::*'][(note-3) % 24]
1297
1332
  if conditions[:shoyo]
1298
- formula = dates.cal4note.s_terms.formula
1299
- etime = dates.cal4note.s_terms.term(date - When.Duration('P3D'), [0,15], When::SYSTEM)
1300
- if formula.respond_to?(:year_length) && formula.denominator
1301
- shoyo = etime.clk_time.universal_time
1302
- shoyo += When::TM::Duration::DAY * (etime.to_i - date.to_i)
1303
- shoyo = (shoyo / When::TM::Duration::DAY * formula.denominator * 1000 + 0.5).floor / 1000.0
1304
- shoyo = shoyo.to_i if shoyo == shoyo.to_i
1305
- residue.label + "(#{shoyo}/#{formula.denominator})"
1306
- else
1307
- etime.events = [residue.label]
1308
- etime
1309
- end
1333
+ dates.cal4note.s_terms.event_time(date, residue.label, [0,15])
1310
1334
  else
1311
1335
  residue
1312
1336
  end
@@ -1318,9 +1342,14 @@ class When::CalendarNote
1318
1342
  notes['七十二候'] ||= mod == 0 ? Notes72[(div - 63) % 72][dates.index_s] : nil
1319
1343
 
1320
1344
  # 往亡
1321
- month = dates.s_date.cal_date[1] - 1
1322
- div, mod = month.divmod(3)
1323
- notes['往亡'] ||= ((div+7)*(mod+1) + month * 30 + 314 - longitude) % 360 == 0 ? '往亡' : nil
1345
+ unless notes['往亡'] && notes['神吉']
1346
+ month = dates.s_date.cal_date[-2] - 1
1347
+ day = dates.s_date.cal_date[-1] - 1
1348
+ div, mod = month.divmod(3)
1349
+ deg = (div+7)*(mod+1) + month * 30 + 314
1350
+ notes['往亡'] = (dates.range < 11 ? (deg - longitude) % 360 == 0 : # 没を含まない
1351
+ (deg - 315 ) % 30 == day)? '往亡' : nil # 没を含む
1352
+ end
1324
1353
 
1325
1354
  # 伏龍
1326
1355
  notes['伏龍'] ||= {