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.
- 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
|
|