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.
Files changed (193) hide show
  1. data/LICENSE.ja.txt +25 -25
  2. data/LICENSE.txt +31 -31
  3. data/bin/irb.rc +5 -0
  4. data/bin/locales.rb +2 -2
  5. data/bin/when.rb +16 -0
  6. data/bin/when.rb.config +7 -0
  7. data/lib/when_exe.rb +616 -14
  8. data/lib/when_exe/basictypes.rb +615 -0
  9. data/lib/when_exe/calendartypes.rb +1700 -0
  10. data/lib/when_exe/coordinates.rb +1936 -0
  11. data/lib/when_exe/core/compatibility.rb +54 -0
  12. data/lib/when_exe/core/duration.rb +72 -72
  13. data/lib/when_exe/core/extension.rb +382 -0
  14. data/lib/when_exe/ephemeris.rb +1845 -0
  15. data/lib/when_exe/googlecalendar.rb +140 -0
  16. data/lib/when_exe/icalendar.rb +1587 -0
  17. data/lib/when_exe/inspect.rb +1237 -0
  18. data/lib/when_exe/locales/af.rb +90 -0
  19. data/lib/when_exe/locales/ar.rb +145 -0
  20. data/lib/when_exe/locales/az.rb +90 -0
  21. data/lib/when_exe/locales/bg.rb +90 -0
  22. data/lib/when_exe/locales/bn.rb +94 -0
  23. data/lib/when_exe/locales/bs.rb +121 -0
  24. data/lib/when_exe/locales/ca.rb +92 -0
  25. data/lib/when_exe/locales/cs.rb +107 -0
  26. data/lib/when_exe/locales/cy.rb +150 -0
  27. data/lib/when_exe/locales/da.rb +84 -0
  28. data/lib/when_exe/locales/de.rb +92 -0
  29. data/lib/when_exe/locales/de_AT.rb +92 -0
  30. data/lib/when_exe/locales/de_CH.rb +92 -0
  31. data/lib/when_exe/locales/el.rb +93 -0
  32. data/lib/when_exe/locales/en.rb +88 -0
  33. data/lib/when_exe/locales/en_AU.rb +88 -0
  34. data/lib/when_exe/locales/en_CA.rb +88 -0
  35. data/lib/when_exe/locales/en_GB.rb +88 -0
  36. data/lib/when_exe/locales/en_IN.rb +88 -0
  37. data/lib/when_exe/locales/en_NZ.rb +88 -0
  38. data/lib/when_exe/locales/eo.rb +89 -0
  39. data/lib/when_exe/locales/es.rb +84 -0
  40. data/lib/when_exe/locales/es_419.rb +84 -0
  41. data/lib/when_exe/locales/es_AR.rb +84 -0
  42. data/lib/when_exe/locales/es_CL.rb +84 -0
  43. data/lib/when_exe/locales/es_CO.rb +84 -0
  44. data/lib/when_exe/locales/es_MX.rb +84 -0
  45. data/lib/when_exe/locales/es_PE.rb +85 -0
  46. data/lib/when_exe/locales/es_VE.rb +84 -0
  47. data/lib/when_exe/locales/et.rb +94 -0
  48. data/lib/when_exe/locales/eu.rb +95 -0
  49. data/lib/when_exe/locales/fa.rb +80 -0
  50. data/lib/when_exe/locales/fi.rb +89 -0
  51. data/lib/when_exe/locales/fr.rb +88 -0
  52. data/lib/when_exe/locales/fr_CA.rb +88 -0
  53. data/lib/when_exe/locales/fr_CH.rb +88 -0
  54. data/lib/when_exe/locales/gl.rb +81 -0
  55. data/lib/when_exe/locales/he.rb +84 -0
  56. data/lib/when_exe/locales/hi.rb +80 -0
  57. data/lib/when_exe/locales/hi_IN.rb +84 -0
  58. data/lib/when_exe/locales/hr.rb +128 -0
  59. data/lib/when_exe/locales/hu.rb +84 -0
  60. data/lib/when_exe/locales/id.rb +89 -0
  61. data/lib/when_exe/locales/is.rb +89 -0
  62. data/lib/when_exe/locales/it.rb +87 -0
  63. data/lib/when_exe/locales/it_CH.rb +87 -0
  64. data/lib/when_exe/locales/ja.rb +78 -0
  65. data/lib/when_exe/locales/kn.rb +86 -0
  66. data/lib/when_exe/locales/ko.rb +78 -0
  67. data/lib/when_exe/locales/links.rb +2342 -0
  68. data/lib/when_exe/locales/lo.rb +123 -0
  69. data/lib/when_exe/locales/locales.rb +91 -0
  70. data/lib/when_exe/locales/lt.rb +111 -0
  71. data/lib/when_exe/locales/lv.rb +118 -0
  72. data/lib/when_exe/locales/mk.rb +93 -0
  73. data/lib/when_exe/locales/mn.rb +80 -0
  74. data/lib/when_exe/locales/nb.rb +81 -0
  75. data/lib/when_exe/locales/ne.rb +81 -0
  76. data/lib/when_exe/locales/nl.rb +92 -0
  77. data/lib/when_exe/locales/nn.rb +73 -0
  78. data/lib/when_exe/locales/or.rb +84 -0
  79. data/lib/when_exe/locales/pl.rb +128 -0
  80. data/lib/when_exe/locales/pt.rb +88 -0
  81. data/lib/when_exe/locales/pt_BR.rb +88 -0
  82. data/lib/when_exe/locales/rm.rb +143 -0
  83. data/lib/when_exe/locales/ro.rb +105 -0
  84. data/lib/when_exe/locales/ru.rb +128 -0
  85. data/lib/when_exe/locales/sk.rb +109 -0
  86. data/lib/when_exe/locales/sl.rb +122 -0
  87. data/lib/when_exe/locales/sr.rb +122 -0
  88. data/lib/when_exe/locales/sv.rb +83 -0
  89. data/lib/when_exe/locales/sw.rb +89 -0
  90. data/lib/when_exe/locales/th.rb +78 -0
  91. data/lib/when_exe/locales/tl.rb +99 -0
  92. data/lib/when_exe/locales/tr.rb +96 -0
  93. data/lib/when_exe/locales/uk.rb +128 -0
  94. data/lib/when_exe/locales/uz.rb +128 -0
  95. data/lib/when_exe/locales/vi.rb +94 -0
  96. data/lib/when_exe/locales/wo.rb +82 -0
  97. data/lib/when_exe/locales/zh_CN.rb +77 -0
  98. data/lib/when_exe/locales/zh_HK.rb +77 -0
  99. data/lib/when_exe/locales/zh_TW.rb +77 -0
  100. data/lib/when_exe/mini_application.rb +252 -0
  101. data/lib/when_exe/parts/enumerator.rb +472 -0
  102. data/lib/when_exe/parts/geometric_complex.rb +379 -0
  103. data/lib/when_exe/parts/locale.rb +513 -0
  104. data/lib/when_exe/parts/method_cash.rb +207 -0
  105. data/lib/when_exe/parts/resource.rb +806 -0
  106. data/lib/when_exe/parts/timezone.rb +182 -0
  107. data/lib/when_exe/region/bahai.rb +145 -0
  108. data/lib/when_exe/region/balinese.rb +627 -0
  109. data/lib/when_exe/region/chinese.rb +896 -0
  110. data/lib/when_exe/region/chinese_calendar.rb +919 -0
  111. data/lib/when_exe/region/chinese_epoch.rb +1245 -0
  112. data/lib/when_exe/region/christian.rb +644 -0
  113. data/lib/when_exe/region/far_east.rb +192 -0
  114. data/lib/when_exe/region/french.rb +66 -0
  115. data/lib/when_exe/region/geologicalage.rb +639 -0
  116. data/lib/when_exe/region/indian.rb +1066 -0
  117. data/lib/when_exe/region/iranian.rb +66 -0
  118. data/lib/when_exe/region/islamic.rb +105 -0
  119. data/lib/when_exe/region/japanese.rb +851 -0
  120. data/lib/when_exe/region/japanese_notes.rb +964 -0
  121. data/lib/when_exe/region/japanese_residues.rb +1149 -0
  122. data/lib/when_exe/region/javanese.rb +228 -0
  123. data/lib/when_exe/region/jewish.rb +127 -0
  124. data/lib/when_exe/region/korean.rb +267 -0
  125. data/lib/when_exe/region/m17n.rb +115 -0
  126. data/lib/when_exe/region/martian.rb +215 -0
  127. data/lib/when_exe/region/mayan.rb +122 -0
  128. data/lib/when_exe/region/moon.rb +333 -0
  129. data/lib/when_exe/region/nihon_shoki.rb +73 -0
  130. data/lib/when_exe/region/planets.rb +585 -0
  131. data/lib/when_exe/region/pope.rb +298 -0
  132. data/lib/when_exe/region/residue.rb +229 -0
  133. data/lib/when_exe/region/roman.rb +325 -0
  134. data/lib/when_exe/region/ryukyu.rb +98 -0
  135. data/lib/when_exe/region/shire.rb +254 -0
  136. data/lib/when_exe/region/sun.rb +210 -0
  137. data/lib/when_exe/region/thai.rb +227 -0
  138. data/lib/when_exe/region/tibetan.rb +233 -0
  139. data/lib/when_exe/region/v50.rb +111 -0
  140. data/lib/when_exe/region/vietnamese.rb +173 -0
  141. data/lib/when_exe/region/world.rb +197 -0
  142. data/lib/when_exe/timestandard.rb +547 -0
  143. data/lib/when_exe/tmduration.rb +330 -330
  144. data/lib/when_exe/tmobjects.rb +1295 -0
  145. data/lib/when_exe/tmposition.rb +1955 -0
  146. data/lib/when_exe/tmreference.rb +1547 -0
  147. data/lib/when_exe/version.rb +10 -3
  148. data/link_to_online_documents +4 -0
  149. data/test/examples/JapanHolidays.ics +456 -0
  150. data/test/examples/Millennium.ics +17 -0
  151. data/test/examples/NewYork.ics +61 -0
  152. data/test/examples/Residue.m17n +135 -0
  153. data/test/examples/Spatial.m17n +179 -0
  154. data/test/examples/Terms.m17n +39 -0
  155. data/test/examples/Test.ics +53 -0
  156. data/test/examples/USA-DST.ics +61 -0
  157. data/test/examples/geometric_complex.rb +41 -0
  158. data/test/examples/sample.xml +14 -0
  159. data/test/examples/today.rb +61 -0
  160. data/test/test.rb +54 -19
  161. data/test/test.rb.config +1 -0
  162. data/test/test/basictypes.rb +368 -0
  163. data/test/test/calendartypes.rb +57 -0
  164. data/test/test/coordinates.rb +380 -0
  165. data/test/test/ephemeris.rb +127 -0
  166. data/test/test/googlecalendar.rb +167 -0
  167. data/test/test/icalendar.rb +848 -0
  168. data/test/test/inspect.rb +115 -0
  169. data/test/test/parts.rb +480 -0
  170. data/test/test/region/chinese.rb +161 -0
  171. data/test/test/region/french.rb +33 -0
  172. data/test/test/region/geologicalage.rb +14 -0
  173. data/test/test/region/indian.rb +55 -0
  174. data/test/test/region/iran.rb +54 -0
  175. data/test/test/region/islamic.rb +18 -0
  176. data/test/test/region/japanese.rb +62 -0
  177. data/test/test/region/jewish.rb +61 -0
  178. data/test/test/region/m17n.rb +181 -0
  179. data/test/test/region/mayan.rb +78 -0
  180. data/test/test/region/moon.rb +14 -0
  181. data/test/test/region/planets.rb +14 -0
  182. data/test/test/region/residue.rb +123 -0
  183. data/test/test/region/sun.rb +14 -0
  184. data/test/test/region/thai.rb +94 -0
  185. data/test/test/region/tibetan.rb +30 -0
  186. data/test/test/tmobjects.rb +356 -57
  187. data/test/test/tmposition.rb +237 -0
  188. data/test/test/tmreference.rb +95 -0
  189. data/when_exe.gemspec +2 -2
  190. metadata +187 -7
  191. data/doc/COPYING +0 -31
  192. data/doc/COPYING.ja +0 -25
  193. data/doc/document_url +0 -1
@@ -0,0 +1,325 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-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
+ module When
9
+
10
+ class BasicTypes::M17n
11
+
12
+ RomanTerms = [self, [
13
+ "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
14
+ "locale:[=en:, ja=ja:, alias]",
15
+ "names:[RomanTerms]",
16
+
17
+ [self, # ..CE-44 / ..BCE45
18
+ "names:[MonthA, 月=ja:%E6%9C%88_(%E6%9A%A6)]",
19
+ "[Ianuarius, 1月]",
20
+ "[Februarius, 2月]",
21
+ "[Martius, 3月]",
22
+ "[Aprilis, 4月]",
23
+ "[Maius, 5月]",
24
+ "[Iunius, 6月]",
25
+ "[Quintilis, 旧7月]",
26
+ "[Sextilis, 旧8月]",
27
+ "[September, 9月]",
28
+ "[October, 10月]",
29
+ "[November, 11月]",
30
+ "[December, 12月]"
31
+ ],
32
+
33
+ [self, # CE-43..CE-8 / BCE44..BCE9
34
+ "names:[MonthB, 月=ja:%E6%9C%88_(%E6%9A%A6)]",
35
+ "[Ianuarius, 1月]",
36
+ "[Februarius, 2月]",
37
+ "[Martius, 3月]",
38
+ "[Aprilis, 4月]",
39
+ "[Maius, 5月]",
40
+ "[Iunius, 6月]",
41
+ "[Iulius, 7月]",
42
+ "[Sextilis, 旧8月]",
43
+ "[September, 9月]",
44
+ "[October, 10月]",
45
+ "[November, 11月]",
46
+ "[December, 12月]"
47
+ ],
48
+
49
+ [self, # CE-7..CE36, CE41.. / BCE8..CE36, CE41..
50
+ "names:[Month, 月=ja:%E6%9C%88_(%E6%9A%A6)]",
51
+ "[Ianuarius, 1月]",
52
+ "[Februarius, 2月]",
53
+ "[Martius, 3月]",
54
+ "[Aprilis, 4月]",
55
+ "[Maius, 5月]",
56
+ "[Iunius, 6月]",
57
+ "[Iulius, 7月]",
58
+ "[Augustus, 8月]",
59
+ "[September, 9月]",
60
+ "[October, 10月]",
61
+ "[November, 11月]",
62
+ "[December, 12月]"
63
+ ],
64
+
65
+ [self, # CE37..CE40
66
+ "names:[MonthC, 月=ja:%E6%9C%88_(%E6%9A%A6)]",
67
+ "[Ianuarius, 1月]",
68
+ "[Februarius, 2月]",
69
+ "[Martius, 3月]",
70
+ "[Aprilis, 4月]",
71
+ "[Maius, 5月]",
72
+ "[Iunius, 6月]",
73
+ "[Iulius, 7月]",
74
+ "[Augustus, 8月]",
75
+ "[Germanicus, 新9月]",
76
+ "[October, 10月]",
77
+ "[November, 11月]",
78
+ "[December, 12月]"
79
+ ],
80
+
81
+ [self, # Intercalary Months
82
+ "names:[IntercalaryMonth=en:Intercalation, 閏月]",
83
+ "[%0sIntercalaris=en:Roman_calendar#Calendar_of_Numa," +
84
+ "閏月%0s=ja:%E3%83%AD%E3%83%BC%E3%83%9E%E6%9A%A6#.E6.9C.AB.E6.9C.9F.E3.81.AE.E3.83.AD.E3.83.BC.E3.83.9E.E6.9A.A6]",
85
+ "[%0sIntercalaris Prior=en:Julian_calendar#Realignment_of_the_year," +
86
+ "第1閏月%0s=ja:%E3%83%AD%E3%83%BC%E3%83%9E%E6%9A%A6#.E6.9C.AB.E6.9C.9F.E3.81.AE.E3.83.AD.E3.83.BC.E3.83.9E.E6.9A.A6]",
87
+ "[%0sIntercalaris Posterior=en:Julian_calendar#Realignment_of_the_year," +
88
+ "第2閏月%0s=ja:%E3%83%AD%E3%83%BC%E3%83%9E%E6%9A%A6#.E6.9C.AB.E6.9C.9F.E3.81.AE.E3.83.AD.E3.83.BC.E3.83.9E.E6.9A.A6]",
89
+ ]
90
+ ]]
91
+ end
92
+
93
+ class TM::CalendarEra
94
+
95
+ # From http://en.wikipedia.org/wiki/Julian_calendar#Sacrobosco.27s_theory_on_month_lengths
96
+ Julian = [self, [
97
+ "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
98
+ "locale:[=en:, ja=ja:, alias]",
99
+ "period:[Roman=en:Roman_calendar, ローマ暦=ja:%E3%83%AD%E3%83%BC%E3%83%9E%E6%9A%A6]",
100
+ ["[AUC=en:Ab_urbe_condita, 建国紀元=ja:%E3%83%AD%E3%83%BC%E3%83%9E%E5%BB%BA%E5%9B%BD%E7%B4%80%E5%85%83, alias:Ab_urbe_condita]709.1.1",
101
+ "Calendar Epoch", "-44-01-01^JulianA",
102
+ "-7-03-01^JulianB",
103
+ "8-01-01^JulianC", "476-09-04"]
104
+ ]]
105
+
106
+ # From http://www.tyndalehouse.com/Egypt/ptolemies/chron/roman/chron_rom_intro_fr.htm
107
+ Roman = [self, [
108
+ "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
109
+ "locale:[=en:, ja=ja:, alias]",
110
+ "period:[Roman=en:Roman_calendar, ローマ暦=ja:%E3%83%AD%E3%83%BC%E3%83%9E%E6%9A%A6]",
111
+ ["[AUC=en:Ab_urbe_condita, 建国紀元=ja:%E3%83%AD%E3%83%BC%E3%83%9E%E5%BB%BA%E5%9B%BD%E7%B4%80%E5%85%83, alias:Ab_urbe_condita]492.5.1",
112
+ "Calendar Epoch", "-261-05-01^RomanA?border=0-5-1",
113
+ "-221-03-01^RomanA?border=0-3-1",
114
+ "-152-01-01^RomanA",
115
+ "-43-01-01^RomanB",
116
+ "-7-01-01^Roman",
117
+ "37-01-01^RomanC",
118
+ "41-01-01^Roman", "476-09-04"]
119
+ ]]
120
+
121
+ end
122
+
123
+ module CalendarTypes
124
+
125
+ # From http://en.wikipedia.org/wiki/Julian_calendar#Sacrobosco.27s_theory_on_month_lengths
126
+ _Index0 = Coordinates::Index.new
127
+ _IndicesB12 = [Coordinates::Index.new({:unit=>12, :trunk=>When.Resource('_m:RomanTerms::MonthB::*')}), _Index0]
128
+ _Indices12 = [Coordinates::Index.new({:unit=>12, :trunk=>When.Resource('_m:RomanTerms::Month::*')}), _Index0]
129
+
130
+ #
131
+ # Julian Calendar A : BCE45-BCE8
132
+ #
133
+ JulianA = [CyclicTableBased, {
134
+ 'origin_of_LSC' => 1704987,
135
+ 'origin_of_MSC' => -44,
136
+ 'indices' => _IndicesB12,
137
+ 'rule_table' => {
138
+ 'T' => {'Rule' =>[365,366,365]},
139
+ 365 => {'Length'=>[31,29] + [31,30]*5},
140
+ 366 => {'Length'=>[31,30] + [31,30]*5}
141
+ },
142
+ 'note' => 'RomanNote'
143
+ }]
144
+
145
+ #
146
+ # Julian Calendar B : BCE8-CE7
147
+ #
148
+ JulianB = [CyclicTableBased, {
149
+ 'origin_of_LSC' => 1704987+13,
150
+ 'origin_of_MSC' => -44,
151
+ 'indices' => _IndicesB12,
152
+ 'rule_table' => {
153
+ 'T' => {'Rule' =>[365]},
154
+ 365 => {'Length'=>[31,28] + [31,30,31,30,31]*2}
155
+ },
156
+ 'note' => 'RomanNote'
157
+ }]
158
+
159
+ #
160
+ # Julian Calendar C : CE8-
161
+ #
162
+ JulianC = [Julian, {
163
+ 'indices' => _Indices12,
164
+ 'note' => 'RomanNote'
165
+ }]
166
+
167
+ # From http://www.tyndalehouse.com/Egypt/ptolemies/chron/roman/chron_rom_intro_fr.htm
168
+ #
169
+ # Roman Calendar BCE262-(CE60)-CE480
170
+ #
171
+ # _ID_N = '1,2,3,4,5,6,7,8,9,10,11,12'
172
+ _ID_L = '1,2,2=,3,4,5,6,7,8,9,10,11,12'
173
+ _ID_J = '1,2,2=,3,4,5,6,7,8,9,10,11,11<,11>,12'
174
+ _Branch = {
175
+ 1=>When.Resource('_m:RomanTerms::IntercalaryMonth::*')[0],
176
+ 0.5=>When.Resource('_m:RomanTerms::IntercalaryMonth::*')[1],
177
+ 1.5=>When.Resource('_m:RomanTerms::IntercalaryMonth::*')[2]
178
+ }
179
+ _IndicesA = [Coordinates::Index.new({:branch=>_Branch, :trunk=>When.Resource('_m:RomanTerms::MonthA::*')}), _Index0]
180
+ _IndicesB = [Coordinates::Index.new({:branch=>_Branch, :trunk=>When.Resource('_m:RomanTerms::MonthB::*')}), _Index0]
181
+ _Indices = [Coordinates::Index.new({:branch=>_Branch, :trunk=>When.Resource('_m:RomanTerms::Month::*')}), _Index0]
182
+ _IndicesC = [Coordinates::Index.new({:branch=>_Branch, :trunk=>When.Resource('_m:RomanTerms::MonthC::*')}), _Index0]
183
+ Options = {
184
+ 'origin_of_LSC' => 1625698,
185
+ 'origin_of_MSC' => -261,
186
+ 'indices' => _Indices,
187
+ 'rule_table' => {
188
+ 'T' => {'Rule' => %w( A C A B A C A B A C A B
189
+ A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A A C B A A A A C A A A B A C A A B
190
+ A A A A A A A A A A C A C A B C A C A B C A C A C A B C A C A C A A B C A B C A B C A B C A C A C A
191
+ C A C A C A C A C A C A A C A C A C A C A C A C A C A C A C A C A C A C A A C A A C A A C A A C A A
192
+ C A C A C A C A C A C A C A A C A C A C A C A C A C A C A C A C A C A A C A A C A A C A A B A A C A
193
+ A A A A J N L N N L N N L N N L N N L N N L N N L N N L N N L N N L N N L N N L N N L N N N N N N N) +
194
+ %w(N N N L) * 120
195
+ },
196
+ 'A' => {'Length'=>[29, 28, 31, 29, 31, 29, 31, 29, 29, 31, 29, 29]},
197
+ 'B' => {'Length'=>[29, 23, 27, 31, 29, 31, 29, 31, 29, 29, 31, 29, 29], 'IDs'=>_ID_L},
198
+ 'C' => {'Length'=>[29, 24, 27, 31, 29, 31, 29, 31, 29, 29, 31, 29, 29], 'IDs'=>_ID_L},
199
+ 'J' => {'Length'=>[29, 24, 27, 31, 29, 31, 29, 31, 29, 29, 31, 34, 31, 31, 29], 'IDs'=>_ID_J},
200
+ 'N' => {'Length'=>[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]},
201
+ 'L' => {'Length'=>[31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]},
202
+ },
203
+ 'note' => 'RomanNote'
204
+ }
205
+ RomanA = [CyclicTableBased, Options.merge({'indices' => _IndicesA})]
206
+ RomanB = [CyclicTableBased, Options.merge({'indices' => _IndicesB})]
207
+ Roman = [CyclicTableBased, Options]
208
+ RomanC = [CyclicTableBased, Options.merge({'indices' => _IndicesC})]
209
+
210
+ #
211
+ # 古代ローマの暦注
212
+ #
213
+ class CalendarNote::RomanNote < CalendarNote
214
+
215
+ NoteObjects = [When::BasicTypes::M17n, [
216
+ "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
217
+ "locale:[=en:, ja=ja:, alias]",
218
+ "names:[Roman]",
219
+
220
+ # 年の暦注 ----------------------------
221
+ [When::BasicTypes::M17n,
222
+ "names:[year]",
223
+
224
+ [When::Coordinates::Residue,
225
+ "label:[Solar=en:Solar_cycle_(calendar), 太陽章=]", "divisor:28", "year:-8",
226
+ ],
227
+
228
+ [When::Coordinates::Residue,
229
+ "label:[Metonic=en:Metonic_cycle, 太陰章=]", "divisor:19", "year:0",
230
+ ],
231
+
232
+ [When::Coordinates::Residue,
233
+ "label:[Indiction, インディクション]", "divisor:15", "year:-2",
234
+ [When::Coordinates::Residue, "label:[I= ]", "remainder: 0"],
235
+ [When::Coordinates::Residue, "label:[II= ]", "remainder: 1"],
236
+ [When::Coordinates::Residue, "label:[III= ]", "remainder: 2"],
237
+ [When::Coordinates::Residue, "label:[IV= ]", "remainder: 3"],
238
+ [When::Coordinates::Residue, "label:[V= ]", "remainder: 4"],
239
+ [When::Coordinates::Residue, "label:[VI= ]", "remainder: 5"],
240
+ [When::Coordinates::Residue, "label:[VII= ]", "remainder: 6"],
241
+ [When::Coordinates::Residue, "label:[VIII=]", "remainder: 7"],
242
+ [When::Coordinates::Residue, "label:[IX= ]", "remainder: 8"],
243
+ [When::Coordinates::Residue, "label:[X= ]", "remainder: 9"],
244
+ [When::Coordinates::Residue, "label:[XI= ]", "remainder: 10"],
245
+ [When::Coordinates::Residue, "label:[XII= ]", "remainder: 11"],
246
+ [When::Coordinates::Residue, "label:[XIII=]", "remainder: 12"],
247
+ [When::Coordinates::Residue, "label:[XIV= ]", "remainder: 13"],
248
+ [When::Coordinates::Residue, "label:[XV= ]", "remainder: 14"],
249
+ ]
250
+ ],
251
+
252
+ # 月の暦注 ----------------------------
253
+ [When::BasicTypes::M17n,
254
+ "names:[month]",
255
+ [When::BasicTypes::M17n,
256
+ "names:[Month]"
257
+ ]
258
+ ],
259
+
260
+ # 日の暦注 ----------------------------
261
+ [When::BasicTypes::M17n,
262
+ "names:[day]",
263
+
264
+ [When::BasicTypes::M17n,
265
+ "names:[Nomen]"
266
+ ]
267
+ ]
268
+ ]]
269
+
270
+ Order = [
271
+ 'a.d. bis VI',
272
+ 'prid.', 'a.d. III', 'a.d. IV', 'a.d. V', 'a.d. VI', 'a.d. VII', 'a.d. VIII',
273
+ 'a.d. IX', 'a.d. X', 'a.d. XI', 'a.d. XII', 'a.d. XIII', 'a.d. XIV', 'a.d. XV',
274
+ 'a.d. XVI', 'a.d. XVII', 'a.d. XVIII', 'a.d. XIX', 'a.d. XX', 'a.d. XXI', 'a.d. XXII'
275
+ ]
276
+
277
+ LongMonths = [3, 5, 7, 10, When.Pair(11,0.5), When.Pair(11,1.5)]
278
+ LongType = [1, 2..6, 7, 8..14, 15]
279
+ ShortType = [1, 2..4, 5, 6..12, 13]
280
+
281
+ # 暦注 - 日の名前
282
+ #
283
+ # @param [When::TM::CalDate] date
284
+ #
285
+ # @return [String]
286
+ #
287
+ def nomen(date)
288
+ y, m, d = date.cal_date
289
+ month_name = _abbr_of_month(date)
290
+ kal, to_nonae, nonae, to_idus, idus = LongMonths.include?(m) ? LongType : ShortType
291
+ case d
292
+ when kal ; return 'Kal. ' + month_name
293
+ when to_nonae ; return Order[nonae - d] + ' Non. ' + month_name
294
+ when nonae ; return 'Non. ' + month_name
295
+ when to_idus ; return Order[idus - d] + ' Id. ' + month_name
296
+ when idus ; return 'Id. ' + month_name
297
+ end
298
+ this_month = date.floor(When::MONTH)
299
+ next_month = this_month.succ
300
+ month_name = _abbr_of_month(next_month)
301
+ rest = next_month.to_i - date.to_i
302
+ if m == 2 && next_month.to_i - this_month.to_i == 29
303
+ return Order[0] + ' Kal. ' + month_name if rest == 5
304
+ rest -= 1 if rest > 5
305
+ end
306
+ return Order[rest] + ' Kal. ' + month_name
307
+ end
308
+
309
+ private
310
+
311
+ # オブジェクトの正規化
312
+ def _normalize(args=[], options={})
313
+ @event = 'nomen'
314
+ super
315
+ end
316
+
317
+ # 日の省略名
318
+ def _abbr_of_month(month)
319
+ name = month.name('month').to_s
320
+ return name.sub(/ (..).*/, ' \1.') if name.sub!(/Intercalaris(.*)?/, 'Int.\1')
321
+ name.size <= 3 ? name : name[/^...[^caeiou]*/] + '.'
322
+ end
323
+ end
324
+ end
325
+ end
@@ -0,0 +1,98 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 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'
9
+ require 'when_exe/region/chinese_calendar'
10
+
11
+ #
12
+ # 琉球王位一覧表
13
+ #
14
+ # (参考文献)
15
+ # 沖縄県の歴史(山川出版社)巻末年表など
16
+ # 沖縄の歴史と文化(中公新書)
17
+ # コンサイス世界年表(三省堂)
18
+ #
19
+ module When
20
+ class TM::CalendarEra
21
+
22
+ #
23
+ # 琉球王朝
24
+ #
25
+ Ryukyu = [self, [
26
+ "namespace:[ja=http://ja.wikipedia.org/wiki/, en=http://en.wikipedia.org/wiki/]",
27
+ "locale:[=ja:, en=en:, alias]",
28
+ "area:[琉球,Ryukyu]",
29
+ [self,
30
+ "period:[舜天王統]", # 嗣 ~ 没 or 譲位
31
+ ["[舜天]1", "[::_m:EpochEvents::Accession]", "name=[舜天];1187^Chinese0956"], # 文治 3~嘉禎 3(1237) 72歳
32
+ ["[舜馬順熙]1", "[::_m:EpochEvents::Accession]", "name=[舜馬順熙];1238"], # 嘉禎 4~宝治 2(1248) 64歳
33
+ ["[義本]1", "[::_m:EpochEvents::Accession]", "name=[義本];1249" , "1259"] # 宝治 3~正嘉 3(1259) 英祖に譲位
34
+ ],
35
+ [self,
36
+ "period:[英祖王統]",
37
+ ["[英祖]0", "[::_m:EpochEvents::Accession]", "name=[英祖];1259^Chinese0939"], # 正元 2~正安 元(1299) 8 5 71歳
38
+ ["[大成]0", "[::_m:EpochEvents::Accession]", "name=[大成];1299-08-05"], # 正安 2~延慶 元(1308) 12 8 62歳
39
+ ["[英慈]0", "[::_m:EpochEvents::Accession]", "name=[英慈];1308-12-08"], # 延慶 2~正和 2(1313) 9 20 46歳
40
+ ["[玉城]0", "[::_m:EpochEvents::Accession]", "name=[玉城];1313-09-20"], # 正和 3~延元 元(1336) 3 11 41歳
41
+ ["[西威]0", "[::_m:EpochEvents::Accession]", "name=[西威];1336-03-11", "1349-04-13"] # 延元 2~貞和 5(1349) 4 13 22歳
42
+ ],
43
+ [self,
44
+ "period:[中山王国]",
45
+ ["[察度]0", "[::_m:EpochEvents::Accession]", "name=[察度];1349-04-13^Chinese0939"], # 貞和 6~応永 2(1395) 10 5 75歳
46
+ ["[武寧]0", "[::_m:EpochEvents::Accession]", "name=[武寧];1395-10-05", "1406"] # 応永 3~応永 13(1406) 尚巴志が滅ぼす
47
+ ],
48
+ [self,
49
+ "period:[山北王国]",
50
+ ["[怕尼芝]1", "[::_m:EpochEvents::Accession]", "name=[怕尼芝];1322^Chinese0939"], # 1383年初めて明に朝貢
51
+ ["[珉]0", "[::_m:EpochEvents::Accession]", "name=[珉];1395"],
52
+ ["[攀安知]0", "[::_m:EpochEvents::Accession]", "name=[攀安知];1400", "1416="] # 永楽元年(1403)衣冠束帯を乞う 尚巴志が滅ぼす
53
+ ],
54
+ [self,
55
+ "period:[山南王国]",
56
+ ["[承察度]1", "[::_m:EpochEvents::Accession]", "name=[承察度];1337^Chinese0939"], # 1380年初めて明に朝貢
57
+ ["[汪英紫]1", "[::_m:EpochEvents::Accession]", "name=[汪英紫];1388"],
58
+ ["[汪応祖]0", "[::_m:EpochEvents::Accession]", "name=[汪応祖];1402"], # 承察度の従弟 明永楽2年(1404)冊封
59
+ ["[他魯毎]0", "[::_m:EpochEvents::Accession]", "name=[他魯毎];1413", "1429="] # 汪応祖の子 永楽14年(1416)冊封 尚巴志が滅ぼす
60
+ ],
61
+ [self,
62
+ "period:[第一尚氏]",
63
+ ["[尚思紹王]1", "[::_m:EpochEvents::Accession]", "name=[尚思紹王];1406^Chinese0939"], # 応永 13~応永 28(1421)
64
+ ["[尚巴志王]0", "[::_m:EpochEvents::Accession]", "name=[尚巴志王];1421"], # 応永 29~永享 11(1439) 4 20 68歳
65
+ ["[尚忠王]0", "[::_m:EpochEvents::Accession]", "name=[尚忠王];1439-04-20"], # 永享 12~文安 元(1444) 10 24 54歳
66
+ ["[尚思達王]0", "[::_m:EpochEvents::Accession]", "name=[尚思達王];1444-10-24"], # 文安 2~宝徳 元(1449) 10 13 42歳
67
+ ["[尚金福王]0", "[::_m:EpochEvents::Accession]", "name=[尚金福王];1449-10-13"], # 宝徳 2~享徳 2(1453) 4 29 56歳
68
+ ["[尚泰久王]0", "[::_m:EpochEvents::Accession]", "name=[尚泰久王];1453-04-29"], # 享徳 3~長禄 4(1460) 6 5 46歳
69
+ ["[尚徳王]0", "[::_m:EpochEvents::Accession]", "name=[尚徳王];1460-06-05","1469-04-23"]# 寛正 2~応仁 3(1469) 4 22 29歳
70
+ ],
71
+ [self,
72
+ "period:[第二尚氏]",
73
+ ["[尚円王]0", "[::_m:EpochEvents::Accession]", "name=[尚円王];1469-04-23^Chinese0939"],# 文明 2~文明 8(1476) 7 28 62歳
74
+ ["[尚宣威王]0", "[::_m:EpochEvents::Accession]", "name=[尚宣威王];1476-07-28"], # 文明 9~同年 (1477) 8 4 48歳 没
75
+ ["[尚真王]1", "[::_m:EpochEvents::Accession]", "name=[尚真王];1477-08-05"], # 文明 9~大永 6(1526) 12 11 62歳
76
+ ["[尚清王]0", "[::_m:EpochEvents::Accession]", "name=[尚清王];1526-12-12"], # 大永 7~天文 24(1555) 6 25 59歳
77
+ ["[尚元王]0", "[::_m:EpochEvents::Accession]", "name=[尚元王];1555-06-25"], # 弘治 2~元亀 3(1572) 4 1 45歳
78
+ ["[尚永王]0", "[::_m:EpochEvents::Accession]", "name=[尚永王];1572-04-01"], # 天正 元~天正 16(1588) 11 25 30歳
79
+ ["[尚寧王]0", "[::_m:EpochEvents::Accession]", "name=[尚寧王];1588-11-25", # 天正 17~元和 6(1620) 9 19 57歳
80
+ "1609-04-05^Japanese?note=ChineseNotes", ""], # 慶長 14(1609) 4 5 尚寧、島津と和議
81
+ ["[尚豊王]0", "[::_m:EpochEvents::Accession]", "name=[尚豊王];1620-09-19"], # 元和 7~寛永 17(1640) 5 4 51歳
82
+ ["[尚賢王]0", "[::_m:EpochEvents::Accession]", "name=[尚賢王];1640-05-04"], # 寛永 18~正保 4(1647) 9 22 23歳
83
+ ["[尚質王]0", "[::_m:EpochEvents::Accession]", "name=[尚質王];1647-09-22"], # 慶安 元~寛文 8(1668) 11 17 40歳
84
+ ["[尚貞王]0", "[::_m:EpochEvents::Accession]", "name=[尚貞王];1668-11-17"], # 寛文 9~宝永 6(1709) 7 13 65歳
85
+ ["[尚益王]0", "[::_m:EpochEvents::Accession]", "name=[尚益王];1709-07-13"], # 宝永 7~正徳 2(1712) 7 15 35歳
86
+ ["[尚敬王]0", "[::_m:EpochEvents::Accession]", "name=[尚敬王];1712-07-15"], # 正徳 3~寛延 4(1751) 1 29 52歳
87
+ ["[尚穆王]0", "[::_m:EpochEvents::Accession]", "name=[尚穆王];1751-01-29"], # 宝暦 2~寛政 6(1794) 4 8 56歳
88
+ ["[尚温王]0", "[::_m:EpochEvents::Accession]", "name=[尚温王];1794-04-08"], # 寛政 7~享和 2(1802) 7 11 19歳
89
+ ["[尚成王]0", "[::_m:EpochEvents::Accession]", "name=[尚成王];1802-07-11"], # 享和 3~同年 (1803) 12 26 4歳
90
+ ["[尚灝王]0", "[::_m:EpochEvents::Accession]", "name=[尚灝王];1803-12-26"], # 文化 元~文政 10(1827) 出家
91
+ ["[尚育摂位=]0", "", "name=[尚育王];1827"], # 文政 11(1828) 摂位
92
+ ["[尚育王]7", "[::_m:EpochEvents::Accession]", "name=[尚育王];1834-05-29"], # 天保 6~弘化 4(1847) 9 17 35歳
93
+ ["[尚泰王]0", "[::_m:EpochEvents::Accession]", "name=[尚泰王];1847-09-17", # 弘化 5~明治 12(1879) 3 31 琉球処分
94
+ "1873-01-01^Gregorian", "1879-03-31="] # 明治 34(1901) 8 19 59歳 没
95
+ ]
96
+ ]]
97
+ end
98
+ end
@@ -0,0 +1,254 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-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
+ module When
9
+ class BasicTypes::M17n
10
+
11
+ ShireTerms = [self, [
12
+ "namespace:[en=http://en.wikipedia.org/wiki/, " +
13
+ "ja=http://ja.wikipedia.org/wiki/, " +
14
+ "cal=http://en.wikipedia.org/wiki/Middle-earth_calendar]",
15
+ "locale:[=en:, ja=ja:, alias]",
16
+ "names:[ShireTerms]",
17
+ "[Shire=en:The_Lord_of_the_Rings, ホビット庄暦=ja:%E6%8C%87%E8%BC%AA%E7%89%A9%E8%AA%9E]",
18
+
19
+ [self,
20
+ "names:[Month, 月=ja:%E6%9C%88_(%E6%9A%A6)]",
21
+ "[Yule=en:Yule, ユール祭= ]",
22
+ "[Afteryule=en:Yule, ユール後月= ]",
23
+ "[Solmath=cal, ソマス= ]",
24
+ "[Rethe=cal, レセ= ]",
25
+ "[Astron=cal, アストロン= ]",
26
+ "[Thrimidge=cal, スリミッジ= ]",
27
+ "[Forelithe=cal, ライズ前月= ]",
28
+ "[Lithe=cal, ライズ祭= ]",
29
+ "[Afterlithe=cal, ライズ後月= ]",
30
+ "[Wedmath=cal, ウェドマス= ]",
31
+ "[Halimath=cal, ハリマス= ]",
32
+ "[Winterfilth=cal, ウィンターフィルス=]",
33
+ "[Blotmath=cal, ブロドマス= ]",
34
+ "[Foreyule=en:Yule, ユール前月= ]"
35
+ ]
36
+ ]]
37
+ end
38
+
39
+ module CalendarTypes
40
+
41
+ #
42
+ # ホビット庄暦の暦週
43
+ #
44
+ class CalendarNote::ShireWeek < CalendarNote
45
+
46
+ NoteObjects = [When::BasicTypes::M17n, [
47
+ "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
48
+ "locale:[=en:, ja=ja:, alias]",
49
+ "names:[Shire]",
50
+
51
+ # 年の暦注 ----------------------------
52
+ [When::BasicTypes::M17n,
53
+ "names:[year]"
54
+ ],
55
+
56
+ # 月の暦注 ----------------------------
57
+ [When::BasicTypes::M17n,
58
+ "names:[month]",
59
+ [When::BasicTypes::M17n,
60
+ "names:[Month]"
61
+ ]
62
+ ],
63
+
64
+ # 日の暦注 ----------------------------
65
+ [When::BasicTypes::M17n,
66
+ "names:[day]",
67
+ [When::BasicTypes::M17n,
68
+ "names:[Week]",
69
+ "[Saturday, 土曜日]",
70
+ "[Sunday, 日曜日]",
71
+ "[Monday, 月曜日]",
72
+ "[Tuesday, 火曜日]",
73
+ "[Wednesday, 水曜日]",
74
+ "[Thursday, 木曜日]",
75
+ "[Friday, 金曜日]",
76
+ "[lithe, 中日= ]",
77
+ "[double, 重日= ]"
78
+ ]
79
+ ]
80
+ ]]
81
+
82
+ # イベントの標準的な間隔を返す
83
+ # @private
84
+ def _delta(parameter=nil)
85
+ return When::DurationP1W
86
+ end
87
+
88
+ # @private
89
+ def lithe_delta(parameter=nil)
90
+ return When::TM::PeriodDuration.new([0,0,7*52+1])
91
+ end
92
+
93
+ # 当日または直前の lithe の日
94
+ # @param date [When::TM::TemporalPosition]
95
+ # @param parameter [nil] 未使用
96
+ # @return [When::TM::TemporalPosition]
97
+ #
98
+ def lithe(date, parameter=nil)
99
+ event_name = 'lithe'
100
+ date = date.frame.jul_trans(date, {:events=>[event_name]})
101
+ y,m,d = date.cal_date
102
+ h,n = (m+5).divmod(7)
103
+ dow = 182 * h[0] + 30 * n + d + 1
104
+ if m==8
105
+ case d
106
+ when 2 ; dow = 0
107
+ when 3 ; dow = date.frame._sum([y]) == 365 ? 1 : 0
108
+ when 4 ; dow = 1
109
+ end
110
+ end
111
+ return date if dow == 0
112
+ date += When::TM::PeriodDuration.new([0,0,-dow])
113
+ date.events = [event_name]
114
+ date
115
+ end
116
+
117
+ # 当日または直前の week_day の日
118
+ # @method week_day(date, parameter=nil)
119
+ # @param date [When::TM::TemporalPosition]
120
+ # @param parameter [nil] 未使用
121
+ # @return [When::TM::TemporalPosition]
122
+ # @note week_day は saturday, sunday, monday, tuesday, wednesday, thursday, friday に読み替えてください。
123
+
124
+ # @private
125
+ 7.times do |k|
126
+ name = When.CalendarNote('ShireWeek/NoteObjects::day::Week')[k].to_s.downcase
127
+ module_eval %Q{
128
+ def #{name}(date, parameter=nil)
129
+ event_name = 'from_#{name}'
130
+ date = date.frame.jul_trans(date, {:events=>[event_name]})
131
+ y,m,d = date.cal_date
132
+ h,n = (m+5).divmod(7)
133
+ dow = (182 * h[0] + 30 * n + d - #{k}) % 7
134
+ case m
135
+ when 8
136
+ case d
137
+ when 2 ; dow = 7 - #{k}
138
+ when 3 ; dow = (date.frame._sum([y]) == 365 && #{k} == 0) ? 0 : 8 - #{k}
139
+ when 4 ; dow = #{k} == 0 ? 0 : 9 - #{k}
140
+ end
141
+ when 9
142
+ dow += (date.frame._sum([y]) == 365) ? 1 : 2 if d < #{k}
143
+ end
144
+ return date if dow == 0
145
+ date += When::TM::PeriodDuration.new([0,0,-dow])
146
+ date.events = [event_name]
147
+ date
148
+ end
149
+
150
+ alias :#{name}_delta :_delta
151
+ }
152
+ end
153
+
154
+ alias :week :saturday
155
+
156
+ # Enumeratorの生成
157
+ #
158
+ # @param [When::TM::TemporalPosition] first 始点
159
+ # @param [Symbol] direction
160
+ # [ :forward - 昇順 ]
161
+ # [ :reverse - 降順 ]
162
+ # @param [String] event イベント名
163
+ # @param [Integer] count_limit 繰り返し回数(デフォルトは指定なし)
164
+ #
165
+ # @return [When::CalendarTypes::ShireWeek::Enumerator]
166
+ #
167
+ def enum_for(first, direction=:forward, event=@event, count_limit=nil)
168
+ Enumerator.new(self, first, direction, event, count_limit)
169
+ end
170
+ alias :to_enum :enum_for
171
+
172
+ # オブジェクトの正規化
173
+ # @private
174
+ def _normalize(args=[], options={})
175
+ @event ||= 'saturday'
176
+ super
177
+ end
178
+
179
+ #
180
+ # イベントを取得する Enumerator
181
+ #
182
+ class Enumerator < CalendarNote::Enumerator
183
+
184
+ #
185
+ # 次のイベントを得る
186
+ #
187
+ # @return [When::TM::TemporalPosition]
188
+ #
189
+ def succ
190
+ value = @current
191
+ plus = @delta.sign > 0
192
+ if @current==:first
193
+ @first = event_eval(@first) unless plus
194
+ @current = @first
195
+ else
196
+ if plus
197
+ @current = event_eval(@current + @delta)
198
+ else
199
+ @last = event_eval(@current - When.Duration('P1D'))
200
+ @current = event_eval(@current + @delta)
201
+ unless [@current.to_i, value.to_i].include?(@last.to_i)
202
+ @current = @last
203
+ return value
204
+ end
205
+ end
206
+ @current = event_eval(@current + @delta * 2) if @current.to_i == value.to_i
207
+ end
208
+ return value
209
+ end
210
+ end
211
+ end
212
+
213
+ #
214
+ # Shire Calendar based on summer solstice date
215
+ #
216
+ Shire = [YearLengthTableBased, {
217
+ 'label' => When.Resource('_m:ShireTerms::Shire'),
218
+ 'indices' => [
219
+ Coordinates::Index.new({:unit=>14, :trunk=>When.Resource('_m:ShireTerms::Month::*')}),
220
+ Coordinates::Index.new
221
+ ],
222
+ 'border' => '00-01-02',
223
+ 'day_offset' => -183, # the day 183 days before summer solstice
224
+ 'cycle_offset' => Rational(1,4), # summer solstice
225
+ 'timezone' => 9, # JST
226
+ 'rule_table' => {
227
+ 365 => {'Length'=>[2]+[30]*6+[3]+[30]*6},
228
+ 366 => {'Length'=>[2]+[30]*6+[4]+[30]*6}
229
+ },
230
+ 'note' => 'ShireWeek'
231
+ }]
232
+
233
+ #
234
+ # Shire Calendar based on Gregorian Date
235
+ #
236
+ ShireG = [CyclicTableBased, {
237
+ 'label' => When.Resource('_m:ShireTerms::Shire'),
238
+ 'origin_of_LSC' => 1721060-10,
239
+ 'indices' => [
240
+ Coordinates::Index.new({:unit=>14, :trunk=>When.Resource('_m:ShireTerms::Month::*')}),
241
+ Coordinates::Index.new
242
+ ],
243
+ 'border' => '00-01-02',
244
+ 'rule_table' => {
245
+ 'T' => {'Rule' =>['LC', 'SC', 'SC', 'SC']},
246
+ 'SC' => {'Rule' =>[365]*4 + [366, 365, 365, 365]*24},
247
+ 'LC' => {'Rule' =>[366, 365, 365, 365]*25},
248
+ 365 => {'Length'=>[2]+[30]*6+[3]+[30]*6},
249
+ 366 => {'Length'=>[2]+[30]*6+[4]+[30]*6}
250
+ },
251
+ 'note' => 'ShireWeek'
252
+ }]
253
+ end
254
+ end