when_exe 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
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['伏龍'] ||= {