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
@@ -18,6 +18,23 @@ module When::Parts
18
18
  # @private
19
19
  LabelProperty = nil
20
20
 
21
+ # @private
22
+ ConstTypes = {
23
+ 'Terms' => ['BasicTypes::M17n', '%s', '_m:%s%s' ],
24
+ 'Era' => ['TM::CalendarEra', '%s', '_e:%s%s' ],
25
+ 'Residue' => ['Coordinates', '%s', '_co:%s%s' ],
26
+ 'Week' => ['CalendarNote', '%sWeek', '_n:%sWeek%s' ],
27
+ 'Note' => ['CalendarNote', '%s', '_n:%s%s' ],
28
+ 'Notes' => ['CalendarNote', '%s', '_n:%s/Notes%s'],
29
+ nil => ['CalendarTypes', '%s', '_c:%s%s' ]
30
+ }
31
+
32
+ # @private
33
+ ConstList = []
34
+
35
+ # private
36
+ IRIHeader = /^[_a-z\d]+:[^:]/i
37
+
21
38
  # @private
22
39
  class ContentLine
23
40
 
@@ -155,6 +172,26 @@ module When::Parts
155
172
  @root_dir ||= When::RootDir
156
173
  end
157
174
 
175
+ #
176
+ # 略称を iri に変換する
177
+ #
178
+ # @param [String or Symbol] abbreviation 略称
179
+ #
180
+ # @return [String] iri or nil
181
+ #
182
+ # @private
183
+ def _abbreviation_to_iri(abbreviation, abbreviation_types=ConstTypes)
184
+ abbreviation_types[:pattern] ||= /^([A-Z].*?)(#{abbreviation_types.keys.compact.join('|')})?(\?.+|::.+)?$/
185
+ abbreviation =~ abbreviation_types[:pattern]
186
+ return nil unless $1
187
+ klass, name, iri = abbreviation_types[$2]
188
+ if klass.kind_of?(String)
189
+ klass = klass.split('::').inject(When) {|k,n| k.const_get(n)}
190
+ abbreviation_types[$2][0] = klass
191
+ end
192
+ klass.const_defined?(name % $1) ? iri % [$1,$3] : nil
193
+ end
194
+
158
195
  # @private
159
196
  attr_reader :_prefix, :_prefix_values, :_prefix_index
160
197
  private :_prefix, :_prefix_values, :_prefix_index
@@ -162,8 +199,9 @@ module When::Parts
162
199
  # 初期化
163
200
  #
164
201
  # @param [Hash] options 以下の通り
165
- # @option options [String] :base_uri Base URI for When_exe Resources (Default When::SourceURI)
166
- # @option options [String] :root_dir Root Directory for When_exe Resources Cash data (Default When::RootDir)
202
+ # @option options [String] :base_uri Base URI for When_exe Resources (Default When::SourceURI)
203
+ # @option options [String] :root_dir Root Directory for When_exe Resources Cash data (Default When::RootDir)
204
+ # @option options [Boolean] :leave_const If true, leave Constants of When module defined
167
205
  #
168
206
  # @return [void]
169
207
  #
@@ -196,6 +234,13 @@ module When::Parts
196
234
  @root_dir = options[:root_dir] || When::RootDir
197
235
  @_prefix_values = @_prefix.values.sort.reverse
198
236
  @_prefix_index = @_prefix.invert
237
+ unless options[:leave_const] || ConstList.empty?
238
+ ConstList.delete_if do |constant|
239
+ When.send(:remove_const, constant) if When.const_defined?(constant)
240
+ true
241
+ end
242
+ When._define_common_calendar_types
243
+ end
199
244
  end
200
245
 
201
246
  # 設定情報を取得する
@@ -219,16 +264,20 @@ module When::Parts
219
264
  def _instance(iri, namespace=nil)
220
265
  _setup_ unless @_pool
221
266
 
222
- # 配列は個別に処理
223
- return iri.map {|e| _instance(e, namespace)} if iri.kind_of?(Array)
267
+ case iri
268
+ when Array ; return iri.map {|e| _instance(e, namespace)} # 配列は個別に処理
269
+ when Resource ; return iri # 登録済みはそのまま
270
+ when String ; # 解析処理へ
271
+ else ; raise ArgumentError, "can't convert #{iri.class} to String" # 例外
272
+ end
224
273
 
225
- # 文字列以外はそのまま返す
226
- return iri unless iri.instance_of?(String)
274
+ # 内部文字列化
275
+ iri = When::EncodingConversion.to_internal_encoding(iri)
227
276
 
228
277
  # 階層がある場合は、階層をたどる
229
278
  iri = Resource._decode(iri)
230
279
  iri = $1 while iri =~ /^\((.*)\)$/
231
- iri = namespace + iri if namespace && iri !~ /^[_a-z\d]+:[^:]/i
280
+ iri = namespace + iri if namespace && iri !~ IRIHeader
232
281
  root, *leaves= Resource._encode(iri).split(/::/)
233
282
  if leaves.size > 0
234
283
  return leaves.inject(_instance(Resource._decode(root))) {|obj,leaf| obj[Resource._decode(leaf)]}
@@ -278,9 +327,9 @@ module When::Parts
278
327
  def _parse(line, type=nil)
279
328
  return line unless line.kind_of?(String)
280
329
  line.sub!(/\s#.*$/, '')
281
- return Locale._split($1) if type && /^#{type}:(.+)$/i =~ line
330
+ return When::Locale._split($1) if type && /^#{type}:(.+)$/i =~ line
282
331
  tokens = line.scan(/((?:[^\\:]|\\.)+)(?::(?!\z))?|:/).flatten
283
- return Locale._split(line) unless tokens.size > 1 && /^(\*)?([A-Z][-A-Z_]{0,255})(?:;(.+))?$/i =~ tokens[0]
332
+ return When::Locale._split(line) unless tokens.size > 1 && /^(\*)?([A-Z][-A-Z_]{0,255})(?:;(.+))?$/i =~ tokens[0]
284
333
  marked, key, property = $~[1..3]
285
334
  values = tokens[1..-1]
286
335
  value = values.join(':') unless values == [nil]
@@ -410,7 +459,7 @@ module When::Parts
410
459
 
411
460
  # external Resource
412
461
  begin
413
- object = When::Parts::Locale.send(:wikipedia_object, path, {:query=>query})
462
+ object = When::Locale.send(:wikipedia_object, path, {:query=>query})
414
463
  return object if object
415
464
  OpenURI
416
465
  args = [path, "1".respond_to?(:force_encoding) ? 'r:utf-8' : 'r']
@@ -442,10 +491,10 @@ module When::Parts
442
491
  def _class(path)
443
492
  list = [When]
444
493
  path[Resource.base_uri.length..-1].split(/\//).each do |mod|
445
- if list[0].const_defined?(mod)
494
+ if list[0].kind_of?(Module) && list[0].const_defined?(mod)
446
495
  list.unshift(list[0].const_get(mod))
447
496
  else
448
- return nil unless (list[0] == When::V)
497
+ return nil unless list[0] == When::V
449
498
  list.unshift(When::V::Root)
450
499
  return list
451
500
  end
@@ -866,8 +915,8 @@ module When::Parts
866
915
  options.each_pair do |key,value|
867
916
  unless (key =~ /^options$|^\.|^[A-Z]/)
868
917
  case "#{key}"
869
- when 'namespace' ; value = Locale._namespace(value)
870
- when 'locale' ; value = Locale._locale(value)
918
+ when 'namespace' ; value = When::Locale._namespace(value)
919
+ when 'locale' ; value = When::Locale._locale(value)
871
920
  end
872
921
  instance_variable_set("@#{key}", value)
873
922
  end
@@ -896,10 +945,10 @@ module When::Parts
896
945
  if content.attribute['altid']
897
946
  options[key][content.attribute['prefix'].object] = content.object
898
947
  else
899
- options[key] = options[key].update(Locale._namespace(value))
948
+ options[key] = options[key].update(When::Locale._namespace(value))
900
949
  end
901
950
  when 'locale'
902
- options[key] = Locale._locale(value)
951
+ options[key] = When::Locale._locale(value)
903
952
  else
904
953
  _parse_altid(properties, content)
905
954
  key_list << key unless key_list.include?(key)
@@ -0,0 +1,56 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2014 Takashi SUGA
4
+
5
+ You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
+ =end
7
+
8
+ module When
9
+
10
+ class BasicTypes::M17n
11
+
12
+ Armenian = [self, [
13
+ "locale:[=en:, ja=ja:, alias]",
14
+ "names:[Armenian=]",
15
+ "[Armenian=en:Armenian_calendar, アルメニア暦=]",
16
+
17
+ [self,
18
+ "names:[Month=, 月=ja:%%<月_(暦)>]",
19
+ "[nawasard= ]",
20
+ "[hoṙi= ]",
21
+ "[sahmi= ]",
22
+ "[trē= ]",
23
+ "[kʿałocʿ= ]",
24
+ "[aracʿ= ]",
25
+ "[mehekan= ]",
26
+ "[areg= ]",
27
+ "[ahekan= ]",
28
+ "[mareri= ]",
29
+ "[margacʿ= ]",
30
+ "[hroticʿ= ]",
31
+ "[epagomenê=]"
32
+ ]
33
+ ]]
34
+ end
35
+
36
+ module CalendarTypes
37
+
38
+ #
39
+ # Armenian Calendar
40
+ #
41
+ Armenian = [CyclicTableBased, {
42
+ 'label' => 'Armenian::Armenian',
43
+ 'origin_of_LSC' => 1922868,
44
+ 'origin_of_MSC' => 1,
45
+ 'epoch_in_CE' => 552,
46
+ 'indices' => [
47
+ When.Index('Armenian::Month', {:unit =>13}),
48
+ When::Coordinates::DefaultDayIndex
49
+ ],
50
+ 'rule_table' => {
51
+ 'T' => {'Rule' =>[365]},
52
+ 365 => {'Length'=>[30]*12+[5]}
53
+ }
54
+ }]
55
+ end
56
+ end
@@ -8,10 +8,9 @@
8
8
  module When
9
9
  class BasicTypes::M17n
10
10
 
11
- BahaiTerms = [self, [
12
- "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/, ar=http://ar.wikipedia.org/wiki/]",
11
+ Bahai = [self, [
13
12
  "locale:[=en:, ar=ar:, alias=en:]",
14
- "names:[BahaiTerms=]",
13
+ "names:[Bahai=]",
15
14
  "[Bahai=en:Bah%C3%A1%27%C3%AD_calendar, ja:バハーイー暦=ja:%%<バハーイー教>]",
16
15
 
17
16
  # %0s は“閏”の表記を抑制する指定となっている
@@ -41,16 +40,19 @@ module When
41
40
  ]]
42
41
  end
43
42
 
43
+ class CalendarNote
44
+ Bahai = [['Bahai::YearName'], ['_m:Bahai::Month'], ['Common::Week']]
45
+ end
46
+
44
47
  module Coordinates
45
48
 
46
49
  # Bahai years
47
50
  Bahai = [When::BasicTypes::M17n, [
48
- "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/, ar=http://ar.wikipedia.org/wiki/]",
49
51
  "locale:[=en:, ar=ar:, alias=en:]",
50
52
  "names:[Bahai]",
51
53
 
52
54
  [Residue,
53
- "label:[YearName]", "divisor:19", "year:0", "format:[%1$s(%3$d)]",
55
+ "label:[YearName]", "divisor:19", "year:0", "format:[%1$s(%3$d)=]",
54
56
  [Residue, "label:[Alif=, ألف=, A= ]", "remainder: 0"],
55
57
  [Residue, "label:[Bá=, باء=, B= ]", "remainder: 1"],
56
58
  [Residue, "label:[Ab=, أب=, Father= ]", "remainder: 2"],
@@ -112,28 +114,26 @@ module When
112
114
  # オブジェクトの正規化
113
115
  #
114
116
  def _normalize(args=[], options={})
115
- @label ||= When.Resource('_m:BahaiTerms::Bahai')
117
+ @label ||= 'Bahai::Bahai'
116
118
 
117
119
  @indices ||= [
118
- When::Coordinates::Index.new({:unit =>19}),
119
- When::Coordinates::Index.new({:unit =>19}),
120
- When::Coordinates::Index.new({:trunk=>When.Resource('_m:BahaiTerms::Month::*'),
121
- :branch=>{+1=>When.Resource('_m:BahaiTerms::Month::*')[19]}}),
120
+ When.Index({:unit =>19}),
121
+ When.Index({:unit =>19}),
122
+ When.Index('Bahai::Month', {:branch=>{+1=>When.Resource('_m:Bahai::Month::*')[19]}}),
122
123
  When::Coordinates::DefaultDayIndex
123
124
  ]
124
- @index_of_MSC ||= 2
125
125
  @origin_of_MSC ||= -1844 + 19*19
126
126
  @rule_table ||= {
127
127
  365 => {'Length'=>[19] * 18 + [4, 19], 'IDs'=>ID},
128
128
  366 => {'Length'=>[19] * 18 + [5, 19], 'IDs'=>ID}
129
129
  }
130
- @note ||= 'BahaiNotes'
130
+ @note ||= 'Bahai'
131
131
 
132
132
  super
133
133
 
134
134
  @engine ||= @location ?
135
135
  When::Ephemeris::Formula.new({:formula=>'1S', :location=>@location}) :
136
- When.Calendar('Gregorian')
136
+ When::Gregorian
137
137
 
138
138
  case @engine
139
139
  when When::Ephemeris::Formula; instance_eval('class << self; alias :_sdn_ :ephemeris_equinox; end')
@@ -8,12 +8,11 @@
8
8
  module When
9
9
  class BasicTypes::M17n
10
10
 
11
- BalineseTerms = [self, [
12
- "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
11
+ Balinese = [self, [
13
12
  "locale:[=en:, ja=ja:, alias]",
14
- "names:[BalineseTerms=]",
13
+ "names:[Balinese=]",
15
14
  "[BalineseLuniSolar=, バリ・サカ暦=]",
16
- "[Tenganan=, テンガナン暦=]",
15
+ "[Tenganan, テンガナン暦=]",
17
16
 
18
17
  [self,
19
18
  "names:[IntercalaryMonth=en:Intercalation, 閏月]",
@@ -90,40 +89,40 @@ module When
90
89
  # 2日週
91
90
  # @return [When::BasicTypes::M17n]
92
91
  def dwiwara
93
- When.CalendarNote('BalineseNote/NoteObjects')['day']['Dwiwara'][Dwiwara[@remainder % 35]]
92
+ When.CalendarNote('Balinese/Notes')['day']['Dwiwara'][Dwiwara[@remainder % 35]]
94
93
  end
95
94
 
96
95
  # 4日週
97
96
  # @return [When::BasicTypes::M17n]
98
97
  def tjaturwara
99
98
  index = (@remainder + 137) % 210
100
- When.CalendarNote('BalineseNote/NoteObjects')['day']['Tjaturwara'][index >= 208 ? 2 : (index-1) % 4]
99
+ When.CalendarNote('Balinese/Notes')['day']['Tjaturwara'][index >= 208 ? 2 : (index-1) % 4]
101
100
  end
102
101
 
103
102
  # 8日週
104
103
  # @return [When::BasicTypes::M17n]
105
104
  def astawara
106
105
  index = (@remainder + 137) % 210
107
- When.CalendarNote('BalineseNote/NoteObjects')['day']['Astawara'][index >= 208 ? 6 : (index-1) % 8]
106
+ When.CalendarNote('Balinese/Notes')['day']['Astawara'][index >= 208 ? 6 : (index-1) % 8]
108
107
  end
109
108
 
110
109
  # 9日週
111
110
  # @return [When::BasicTypes::M17n]
112
111
  def sangawara
113
112
  index = @remainder - 3
114
- When.CalendarNote('BalineseNote/NoteObjects')['day']['Sangawara'][index < 0 ? 0 : index % 9]
113
+ When.CalendarNote('Balinese/Notes')['day']['Sangawara'][index < 0 ? 0 : index % 9]
115
114
  end
116
115
 
117
116
  # 10日週
118
117
  # @return [When::BasicTypes::M17n]
119
118
  def dasawara
120
- When.CalendarNote('BalineseNote/NoteObjects')['day']['Dasawara'][Dasawara[@remainder % 35]]
119
+ When.CalendarNote('Balinese/Notes')['day']['Dasawara'][Dasawara[@remainder % 35]]
121
120
  end
122
121
 
123
122
  # Watek
124
123
  # @return [When::BasicTypes::M17n]
125
124
  def watek
126
- When.CalendarNote('BalineseNote/NoteObjects')['day']['Watek'][Watek[@remainder % 35]]
125
+ When.CalendarNote('Balinese/Notes')['day']['Watek'][Watek[@remainder % 35]]
127
126
  end
128
127
  end
129
128
  end
@@ -134,13 +133,12 @@ module When
134
133
  # バリのサカ暦
135
134
  #
136
135
  BalineseLuniSolar = [self, [
137
- "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
138
136
  "locale:[=en:, ja=ja:, alias]",
139
137
  "period:[BalineseLuniSolar=, バリ・サカ暦=]",
140
138
  ["[SE=, サカ暦=, alias:Balinese_Saka_Era]1887-07<13", "Calendar Epoch", "1965-07<13^BalineseLuniSolar1965",
141
139
  "1971-07-04^BalineseLuniSolar1971",
142
140
  "1993-07-08^BalineseLuniSolar1993",
143
- "2000-06<10^BalineseLuniSolar2000",
141
+ "1999-06<10^BalineseLuniSolar2000",
144
142
  "2003-07<14^BalineseLuniSolar2003", '+Infinity']
145
143
  ]]
146
144
  end
@@ -192,19 +190,18 @@ module When
192
190
  #
193
191
  def _normalize(args=[], options={})
194
192
 
195
- intercalary_month = When.Resource('_m:BalineseTerms::IntercalaryMonth::*')
196
- intercalary_day = When.Resource('_m:BalineseTerms::IntercalaryDay::*')
197
- month_index = Coordinates::Index.new({:branch=>{ 0 => intercalary_month[0], # 白分
198
- +0.5 => intercalary_month[1], # 黒分
199
- +1 => intercalary_month[2], # 閏白分
200
- +1.5 => intercalary_month[3]}, # 閏黒分
201
- :trunk=>When.Resource('_m:BalineseTerms::HinduMonth::*'),
202
- :shift=>+8})
193
+ intercalary_month = When.Resource('_m:Balinese::IntercalaryMonth::*')
194
+ intercalary_day = When.Resource('_m:Balinese::IntercalaryDay::*')
195
+ month_index = When.Index('Balinese::HinduMonth', {:branch=>{ 0 => intercalary_month[0], # 白分
196
+ +0.5 => intercalary_month[1], # 黒分
197
+ +1 => intercalary_month[2], # 閏白分
198
+ +1.5 => intercalary_month[3]}, # 閏黒分
199
+ :shift=>+8})
203
200
 
204
201
  @origin_of_MSC = 0
205
202
 
206
203
  @tabular = CyclicTableBased.new({
207
- 'indices' => [month_index, Coordinates::Index.new],
204
+ 'indices' => [month_index, When::Coordinates::DefaultDayIndex],
208
205
  'rule_table' => @rule_table
209
206
  })
210
207
 
@@ -218,9 +215,9 @@ module When
218
215
  'lunation_length' => '945/32'
219
216
  })]
220
217
 
221
- @indices = [month_index, Coordinates::Index.new({:branch=>{-2=>intercalary_day[0]}})]
218
+ @indices = [month_index, When.Index({:branch=>{-2=>intercalary_day[0]}})]
222
219
 
223
- @note = When.CalendarNote(@note || 'BalineseNote')
220
+ @note = When.CalendarNote(@note || 'Balinese')
224
221
  super
225
222
  end
226
223
  end
@@ -277,18 +274,20 @@ module When
277
274
  # Tenganan Calendar
278
275
  #
279
276
  Tenganan = [CyclicTableBased, {
280
- 'label' => When.Resource('_m:BalineseTerms::Tenganan'),
277
+ 'label' => 'Balinese::Tenganan',
281
278
  'origin_of_LSC' => 1095 * 1573 - 381,
282
279
  'origin_of_MSC' => 1,
280
+ 'note' => [['_m:Calendar::Month'],
281
+ ['_n:Balinese/Notes::day::Triwara', '_n:Balinese/Notes::day::Pantjawara']],
283
282
  'indices' => [
284
- When::Coordinates::Index.new({:trunk=>When.Resource('_m:BalineseTerms::TengananMonth::*')}),
283
+ When.Index('Balinese::TengananMonth'),
285
284
  When::Coordinates::DefaultDayIndex
286
285
  ],
287
286
  'rule_table' => {
288
- 'T' => {'Rule' =>[360, 379, 356]},
287
+ 'T' => {'Rule' =>[360, 383, 352]},
289
288
  360 => {'Length'=>[30] * 12},
290
- 379 => {'Length'=>[30] * 6 + [26] * 2 + [30] * 4 + [27]},
291
- 356 => {'Length'=>[30] * 6 + [28] * 2 + [30] * 4 }
289
+ 383 => {'Length'=>[30] * 6 + [26] * 2 + [30] * 4 + [27]},
290
+ 352 => {'Length'=>[30] * 6 + [28] * 2 + [30] * 4 }
292
291
  }
293
292
  }]
294
293
  end
@@ -296,10 +295,9 @@ module When
296
295
  #
297
296
  # バリ暦の暦注
298
297
  #
299
- class CalendarNote::BalineseNote < CalendarNote
298
+ class CalendarNote::Balinese < CalendarNote
300
299
 
301
- NoteObjects = [When::BasicTypes::M17n, [
302
- "namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
300
+ Notes = [When::BasicTypes::M17n, [
303
301
  "locale:[=en:, ja=ja:, alias]",
304
302
  "names:[Balinese]",
305
303
 
@@ -567,18 +565,18 @@ module When
567
565
  # When::Coordinates::Residue へ処理を委譲する暦注
568
566
  #
569
567
  # @private
570
- When.CalendarNote('BalineseNote/NoteObjects')['day::*'].each do |cood|
568
+ When.CalendarNote('Balinese/Notes')['day::*'].each do |cood|
571
569
  case cood
572
570
  when Coordinates::Residue
573
571
  module_eval %Q{
574
572
  def #{cood.label.to_s.downcase}(date, parameter=nil)
575
- When.CalendarNote('BalineseNote/NoteObjects')['day']['#{cood.label.to_s}'] % date
573
+ When.CalendarNote('Balinese/Notes')['day']['#{cood.label.to_s}'] % date
576
574
  end
577
575
  }
578
576
  when BasicTypes::M17n
579
577
  module_eval %Q{
580
578
  def #{cood.to_s.downcase}(date, parameter=nil)
581
- (When.CalendarNote('BalineseNote/NoteObjects')['day']['Wuku'] % date).#{cood.to_s.downcase}
579
+ (When.CalendarNote('Balinese/Notes')['day']['Wuku'] % date).#{cood.to_s.downcase}
582
580
  end
583
581
  }
584
582
  end
@@ -608,7 +606,7 @@ module When
608
606
  thiti = [d * 1 - 1]
609
607
  thiti[0] += 15 unless [0,1,nil].include?(m * 0)
610
608
  thiti << (thiti[0] + 1) % 30 if d * 0 == -2
611
- table = When.CalendarNote('BalineseNote/NoteObjects')['day']['Hari']
609
+ table = When.CalendarNote('Balinese/Notes')['day']['Hari']
612
610
  thiti.map {|t| table[t / 15][t % 15]}.join('/')
613
611
  end
614
612