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.
- data/bin/irb.rc +1 -0
- data/bin/locales.rb +8 -6
- data/bin/when.rb +1 -1
- data/lib/when_exe.rb +231 -146
- data/lib/when_exe/basictypes.rb +108 -18
- data/lib/when_exe/calendarnote.rb +263 -116
- data/lib/when_exe/calendartypes.rb +413 -22
- data/lib/when_exe/coordinates.rb +58 -36
- data/lib/when_exe/core/compatibility.rb +8 -6
- data/lib/when_exe/core/extension.rb +40 -15
- data/lib/when_exe/ephemeris.rb +20 -19
- data/lib/when_exe/{region → ephemeris}/moon.rb +4 -4
- data/lib/when_exe/{region/ephemeric_notes.rb → ephemeris/notes.rb} +25 -6
- data/lib/when_exe/{region → ephemeris}/planets.rb +0 -0
- data/lib/when_exe/{region → ephemeris}/sun.rb +7 -3
- data/lib/when_exe/{region → ephemeris}/v50.rb +0 -0
- data/lib/when_exe/googlecalendar.rb +2 -2
- data/lib/when_exe/icalendar.rb +3 -3
- data/lib/when_exe/inspect.rb +130 -70
- data/lib/when_exe/locales/af.rb +2 -2
- data/lib/when_exe/locales/akt.rb +176 -0
- data/lib/when_exe/locales/ar.rb +2 -2
- data/lib/when_exe/locales/{locales.rb → autoload.rb} +6 -2
- data/lib/when_exe/locales/az.rb +2 -2
- data/lib/when_exe/locales/bg.rb +2 -2
- data/lib/when_exe/locales/bn.rb +2 -2
- data/lib/when_exe/locales/bs.rb +2 -2
- data/lib/when_exe/locales/ca.rb +2 -2
- data/lib/when_exe/locales/cs.rb +2 -2
- data/lib/when_exe/locales/cy.rb +2 -2
- data/lib/when_exe/locales/da.rb +2 -2
- data/lib/when_exe/locales/de.rb +2 -2
- data/lib/when_exe/locales/de_AT.rb +2 -2
- data/lib/when_exe/locales/de_CH.rb +2 -2
- data/lib/when_exe/locales/el.rb +2 -2
- data/lib/when_exe/locales/en.rb +2 -2
- data/lib/when_exe/locales/en_AU.rb +2 -2
- data/lib/when_exe/locales/en_CA.rb +2 -2
- data/lib/when_exe/locales/en_GB.rb +2 -2
- data/lib/when_exe/locales/en_IE.rb +2 -2
- data/lib/when_exe/locales/en_IN.rb +3 -3
- data/lib/when_exe/locales/en_NZ.rb +2 -2
- data/lib/when_exe/locales/en_US.rb +2 -2
- data/lib/when_exe/locales/en_ZA.rb +88 -0
- data/lib/when_exe/locales/encoding_conversion.rb +126 -0
- data/lib/when_exe/locales/eo.rb +2 -2
- data/lib/when_exe/locales/es.rb +2 -2
- data/lib/when_exe/locales/es_419.rb +2 -2
- data/lib/when_exe/locales/es_AR.rb +2 -2
- data/lib/when_exe/locales/es_CL.rb +2 -2
- data/lib/when_exe/locales/es_CO.rb +2 -2
- data/lib/when_exe/locales/es_CR.rb +2 -2
- data/lib/when_exe/locales/es_EC.rb +2 -2
- data/lib/when_exe/locales/es_MX.rb +2 -2
- data/lib/when_exe/locales/es_PA.rb +2 -2
- data/lib/when_exe/locales/es_PE.rb +2 -2
- data/lib/when_exe/locales/es_US.rb +84 -0
- data/lib/when_exe/locales/es_VE.rb +2 -2
- data/lib/when_exe/locales/et.rb +2 -2
- data/lib/when_exe/locales/eu.rb +2 -2
- data/lib/when_exe/locales/fa.rb +2 -2
- data/lib/when_exe/locales/fi.rb +3 -3
- data/lib/when_exe/locales/fr.rb +2 -2
- data/lib/when_exe/locales/fr_CA.rb +2 -2
- data/lib/when_exe/locales/fr_CH.rb +2 -2
- data/lib/when_exe/locales/gl.rb +2 -2
- data/lib/when_exe/locales/he.rb +3 -3
- data/lib/when_exe/locales/hi.rb +2 -2
- data/lib/when_exe/locales/hi_IN.rb +2 -2
- data/lib/when_exe/locales/hr.rb +2 -2
- data/lib/when_exe/locales/hu.rb +6 -5
- data/lib/when_exe/locales/iast.rb +90 -0
- data/lib/when_exe/locales/id.rb +2 -2
- data/lib/when_exe/locales/is.rb +2 -2
- data/lib/when_exe/locales/it.rb +2 -2
- data/lib/when_exe/locales/it_CH.rb +2 -2
- data/lib/when_exe/locales/ja.rb +2 -2
- data/lib/when_exe/locales/kn.rb +2 -2
- data/lib/when_exe/locales/ko.rb +2 -2
- data/lib/when_exe/locales/links.rb +3 -3
- data/lib/when_exe/locales/lo.rb +2 -2
- data/lib/when_exe/{parts → locales}/locale.rb +77 -49
- data/lib/when_exe/locales/lt.rb +6 -2
- data/lib/when_exe/locales/lv.rb +2 -2
- data/lib/when_exe/locales/mk.rb +2 -2
- data/lib/when_exe/locales/mn.rb +2 -2
- data/lib/when_exe/locales/ms.rb +2 -2
- data/lib/when_exe/locales/nb.rb +2 -2
- data/lib/when_exe/locales/ne.rb +2 -2
- data/lib/when_exe/locales/nl.rb +2 -2
- data/lib/when_exe/locales/nn.rb +2 -2
- data/lib/when_exe/locales/or.rb +2 -2
- data/lib/when_exe/locales/pl.rb +2 -2
- data/lib/when_exe/locales/pt.rb +2 -2
- data/lib/when_exe/locales/pt_BR.rb +2 -2
- data/lib/when_exe/locales/rm.rb +2 -2
- data/lib/when_exe/locales/ro.rb +2 -2
- data/lib/when_exe/locales/ru.rb +2 -2
- data/lib/when_exe/locales/sk.rb +2 -2
- data/lib/when_exe/locales/sl.rb +2 -2
- data/lib/when_exe/locales/sr.rb +2 -2
- data/lib/when_exe/locales/sv.rb +2 -2
- data/lib/when_exe/locales/sw.rb +2 -2
- data/lib/when_exe/locales/ta.rb +95 -0
- data/lib/when_exe/locales/th.rb +2 -2
- data/lib/when_exe/locales/tl.rb +3 -3
- data/lib/when_exe/locales/tr.rb +2 -2
- data/lib/when_exe/locales/transliteration_table.rb +62 -0
- data/lib/when_exe/locales/uk.rb +15 -15
- data/lib/when_exe/locales/ur.rb +2 -2
- data/lib/when_exe/locales/uz.rb +2 -2
- data/lib/when_exe/locales/vi.rb +2 -2
- data/lib/when_exe/locales/wo.rb +2 -2
- data/lib/when_exe/locales/zh_CN.rb +2 -2
- data/lib/when_exe/locales/zh_HK.rb +15 -15
- data/lib/when_exe/locales/zh_TW.rb +2 -2
- data/lib/when_exe/locales/zh_YUE.rb +77 -0
- data/lib/when_exe/mini_application.rb +22 -12
- data/lib/when_exe/parts/geometric_complex.rb +16 -1
- data/lib/when_exe/parts/method_cash.rb +184 -238
- data/lib/when_exe/parts/resource.rb +65 -16
- data/lib/when_exe/region/armenian.rb +56 -0
- data/lib/when_exe/region/bahai.rb +13 -13
- data/lib/when_exe/region/balinese.rb +33 -35
- data/lib/when_exe/region/chinese.rb +82 -78
- data/lib/when_exe/region/{chinese_calendar.rb → chinese/calendars.rb} +59 -40
- data/lib/when_exe/region/{chinese_epoch.rb → chinese/epochs.rb} +3 -4
- data/lib/when_exe/region/{chinese_twin.rb → chinese/twins.rb} +48 -51
- data/lib/when_exe/region/christian.rb +236 -127
- data/lib/when_exe/region/coptic.rb +9 -10
- data/lib/when_exe/region/dee.rb +48 -0
- data/lib/when_exe/region/discordian.rb +225 -0
- data/lib/when_exe/region/far_east.rb +2 -6
- data/lib/when_exe/region/french.rb +7 -17
- data/lib/when_exe/region/geologicalage.rb +0 -1
- data/lib/when_exe/region/goddess.rb +58 -0
- data/lib/when_exe/region/indian.rb +323 -231
- data/lib/when_exe/region/iranian.rb +159 -22
- data/lib/when_exe/region/islamic.rb +7 -9
- data/lib/when_exe/region/japanese.rb +14 -803
- data/lib/when_exe/region/japanese/calendars.rb +397 -0
- data/lib/when_exe/region/japanese/epochs.rb +426 -0
- data/lib/when_exe/region/{nihon_shoki.rb → japanese/nihon_shoki.rb} +0 -2
- data/lib/when_exe/region/{japanese_notes.rb → japanese/notes.rb} +179 -150
- data/lib/when_exe/region/japanese/residues.rb +1306 -0
- data/lib/when_exe/region/{japanese_twin.rb → japanese/twins.rb} +12 -15
- data/lib/when_exe/region/javanese.rb +16 -14
- data/lib/when_exe/region/jewish.rb +8 -9
- data/lib/when_exe/region/korean.rb +146 -35
- data/lib/when_exe/region/m17n.rb +8 -10
- data/lib/when_exe/region/martian.rb +44 -16
- data/lib/when_exe/region/mayan.rb +12 -10
- data/lib/when_exe/region/pope.rb +0 -1
- data/lib/when_exe/region/residue.rb +4 -5
- data/lib/when_exe/region/roman.rb +20 -24
- data/lib/when_exe/region/ryukyu.rb +3 -4
- data/lib/when_exe/region/shire.rb +97 -94
- data/lib/when_exe/region/symmetry.rb +50 -0
- data/lib/when_exe/region/thai.rb +164 -56
- data/lib/when_exe/region/tibetan.rb +86 -86
- data/lib/when_exe/region/vietnamese.rb +9 -12
- data/lib/when_exe/region/weekdate.rb +80 -0
- data/lib/when_exe/region/world.rb +65 -70
- data/lib/when_exe/region/yerm.rb +98 -0
- data/lib/when_exe/region/zoroastrian.rb +203 -0
- data/lib/when_exe/timestandard.rb +4 -4
- data/lib/when_exe/tmobjects.rb +1 -3
- data/lib/when_exe/tmposition.rb +13 -12
- data/lib/when_exe/tmreference.rb +11 -10
- data/lib/when_exe/version.rb +1 -1
- data/link_to_online_documents +3 -3
- data/test/examples/Residue.m17n +1 -1
- data/test/examples/Terms.m17n +1 -1
- data/test/test.rb +2 -1
- data/test/test/basictypes.rb +18 -2
- data/test/test/calendarnote.rb +1 -1
- data/test/test/calendartypes.rb +1 -1
- data/test/test/coordinates.rb +7 -7
- data/test/test/{region → ephemeris}/moon.rb +0 -0
- data/test/test/{region → ephemeris}/planets.rb +0 -0
- data/test/test/{region → ephemeris}/sun.rb +0 -0
- data/test/test/parts.rb +8 -13
- data/test/test/region/christian.rb +245 -0
- data/test/test/region/french.rb +16 -16
- data/test/test/region/iran.rb +34 -34
- data/test/test/region/japanese.rb +6 -4
- data/test/test/region/m17n.rb +8 -7
- data/test/test/region/mayan.rb +12 -12
- data/test/test/region/residue.rb +20 -4
- data/test/test/region/thai.rb +25 -3
- data/test/test/region/yerm.rb +146 -0
- metadata +39 -20
- data/lib/when_exe/region/japanese_residues.rb +0 -1212
- 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]
|
166
|
-
# @option options [String]
|
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)}
|
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
|
-
|
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 !~
|
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::
|
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
|
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
|
-
|
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:[
|
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
|
117
|
+
@label ||= 'Bahai::Bahai'
|
116
118
|
|
117
119
|
@indices ||= [
|
118
|
-
When
|
119
|
-
When
|
120
|
-
When
|
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 ||= '
|
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
|
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
|
-
|
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:[
|
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('
|
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('
|
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('
|
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('
|
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('
|
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('
|
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
|
-
"
|
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:
|
196
|
-
intercalary_day = When.Resource('_m:
|
197
|
-
month_index =
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
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::
|
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,
|
218
|
+
@indices = [month_index, When.Index({:branch=>{-2=>intercalary_day[0]}})]
|
222
219
|
|
223
|
-
@note = When.CalendarNote(@note || '
|
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'
|
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
|
283
|
+
When.Index('Balinese::TengananMonth'),
|
285
284
|
When::Coordinates::DefaultDayIndex
|
286
285
|
],
|
287
286
|
'rule_table' => {
|
288
|
-
'T' => {'Rule' =>[360,
|
287
|
+
'T' => {'Rule' =>[360, 383, 352]},
|
289
288
|
360 => {'Length'=>[30] * 12},
|
290
|
-
|
291
|
-
|
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::
|
298
|
+
class CalendarNote::Balinese < CalendarNote
|
300
299
|
|
301
|
-
|
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('
|
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('
|
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('
|
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('
|
609
|
+
table = When.CalendarNote('Balinese/Notes')['day']['Hari']
|
612
610
|
thiti.map {|t| table[t / 15][t % 15]}.join('/')
|
613
611
|
end
|
614
612
|
|