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
data/lib/when_exe/coordinates.rb
CHANGED
@@ -112,10 +112,10 @@ module When::Coordinates
|
|
112
112
|
return day if day.kind_of?(self)
|
113
113
|
|
114
114
|
day ||= 0
|
115
|
-
week = When.Resource('_co:
|
115
|
+
week = When.Resource('_co:Common::Week').child
|
116
116
|
case day
|
117
117
|
when Numeric ; return week[day]
|
118
|
-
when String ;
|
118
|
+
when String ; day = When::EncodingConversion.to_internal_encoding(day)
|
119
119
|
else ; return nil
|
120
120
|
end
|
121
121
|
|
@@ -696,20 +696,14 @@ module When::Coordinates
|
|
696
696
|
private
|
697
697
|
|
698
698
|
def _normalize(args=[], options={})
|
699
|
-
label
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
shift
|
704
|
-
@label = m17n(label, nil, nil, @options) if label
|
705
|
-
@unit = unit.to_i if unit
|
706
|
-
@base = base.to_i
|
707
|
-
@trunk = trunk if trunk
|
708
|
-
@shift = shift.to_i
|
709
|
-
@branch = branch if branch
|
699
|
+
@label = m17n(@label, nil, nil, @options) if @label
|
700
|
+
@unit = @unit.to_i if @unit
|
701
|
+
@base = (@base || 1).to_i
|
702
|
+
@trunk = When::BasicTypes::M17n.labels(args[0]) unless args.empty?
|
703
|
+
@shift = (@shift || 0).to_i
|
710
704
|
@keys = []
|
711
|
-
if
|
712
|
-
if
|
705
|
+
if @trunk
|
706
|
+
if @trunk.kind_of?(Array)
|
713
707
|
m17n = {}
|
714
708
|
@trunk.length.times do |i|
|
715
709
|
m17n[(i-@shift) % @trunk.length + @base] = @trunk[i]
|
@@ -718,11 +712,11 @@ module When::Coordinates
|
|
718
712
|
end
|
719
713
|
raise TypeError, "Trunk must be Hash" unless @trunk.kind_of?(Hash)
|
720
714
|
@trunk.values.each do |v|
|
721
|
-
@keys |= v.keys if v.kind_of?(When::
|
715
|
+
@keys |= v.keys if v.kind_of?(When::Locale)
|
722
716
|
end
|
723
717
|
end
|
724
|
-
if
|
725
|
-
if
|
718
|
+
if @branch
|
719
|
+
if @branch.kind_of?(Array)
|
726
720
|
m17n = {}
|
727
721
|
@branch.length.times do |i|
|
728
722
|
m17n[i] = @branch[i]
|
@@ -730,8 +724,10 @@ module When::Coordinates
|
|
730
724
|
@branch = m17n
|
731
725
|
end
|
732
726
|
raise TypeError, "Branch must be Hash" unless @branch.kind_of?(Hash)
|
733
|
-
@branch.
|
734
|
-
|
727
|
+
@branch.each_pair do |key, value|
|
728
|
+
value = When::BasicTypes::M17n.label(value)
|
729
|
+
@keys |= value.keys if value.kind_of?(When::Locale)
|
730
|
+
@branch[key] = value
|
735
731
|
end
|
736
732
|
end
|
737
733
|
@trunk_branch = {}
|
@@ -1585,7 +1581,7 @@ module When::Coordinates
|
|
1585
1581
|
# Formula
|
1586
1582
|
instance_eval('class << self; attr_reader :formula; end') if @location && @border
|
1587
1583
|
if respond_to?(:formula)
|
1588
|
-
|
1584
|
+
extend When::Ephemeris::Formula::ForwardedFormula
|
1589
1585
|
@formula ||= When::Ephemeris::Formula.new({:location=>@location})
|
1590
1586
|
@formula = When.Resource(Array(@formula), '_ep:')
|
1591
1587
|
end
|
@@ -1680,7 +1676,10 @@ module When::Coordinates
|
|
1680
1676
|
# block [Block] (デフォルト なし)
|
1681
1677
|
#
|
1682
1678
|
def note
|
1683
|
-
|
1679
|
+
case @note
|
1680
|
+
when String ; @note = When.CalendarNote(@note)
|
1681
|
+
when Array ; @note = When::CalendarNote.new(*@note)
|
1682
|
+
end
|
1684
1683
|
@note
|
1685
1684
|
end
|
1686
1685
|
|
@@ -1944,15 +1943,18 @@ module When::Coordinates
|
|
1944
1943
|
# method cash
|
1945
1944
|
@_m_cash_lock_ = Mutex.new if When.multi_thread
|
1946
1945
|
|
1946
|
+
# label
|
1947
|
+
@label = When::BasicTypes::M17n.label(@label)
|
1948
|
+
|
1947
1949
|
# Origin and Upper Digits
|
1948
1950
|
@origin_of_MSC ||= - +@border.behavior if @border
|
1949
1951
|
@origin_of_MSC = Pair._en_number(@origin_of_MSC)
|
1950
1952
|
@origin_of_LSC = Pair._en_number(@origin_of_LSC)
|
1951
1953
|
@index_of_MSC = Pair._en_number(@index_of_MSC)
|
1952
|
-
if
|
1953
|
-
|
1954
|
-
elsif
|
1955
|
-
|
1954
|
+
if @index_of_MSC != 0
|
1955
|
+
extend OriginAndUpperDigits
|
1956
|
+
elsif @origin_of_MSC != 0
|
1957
|
+
extend OriginOnly
|
1956
1958
|
end
|
1957
1959
|
|
1958
1960
|
# unit
|
@@ -1970,13 +1972,24 @@ module When::Coordinates
|
|
1970
1972
|
@base << @indices[i].base
|
1971
1973
|
@pair << (@indices[i].branch != nil)
|
1972
1974
|
end
|
1973
|
-
|
1975
|
+
extend IndexConversion unless @pair.uniq == [false]
|
1974
1976
|
|
1975
1977
|
# note
|
1976
|
-
@note ||= '
|
1978
|
+
@note ||= 'Default'
|
1977
1979
|
|
1978
1980
|
# keys
|
1979
|
-
@keys = @indices.inject(label.instance_of?(When::
|
1981
|
+
@keys = @indices.inject(label.instance_of?(When::Locale) ? label.keys : []) {|key, index| key |= index.keys}
|
1982
|
+
end
|
1983
|
+
|
1984
|
+
def _default_index_of_MSC
|
1985
|
+
unless @index_of_MSC
|
1986
|
+
[:_coordinates_to_number, :_coordinates_to_number_].each do |to_n|
|
1987
|
+
if respond_to?(to_n)
|
1988
|
+
@index_of_MSC = @indices.length - method(to_n).arity + 1
|
1989
|
+
break
|
1990
|
+
end
|
1991
|
+
end
|
1992
|
+
end
|
1980
1993
|
end
|
1981
1994
|
|
1982
1995
|
# 何もしない
|
@@ -2047,12 +2060,21 @@ module When::Coordinates
|
|
2047
2060
|
def method_missing(name, *args, &block)
|
2048
2061
|
unless When::Parts::MethodCash::Escape.key?(name)
|
2049
2062
|
if note.respond_to?(name)
|
2050
|
-
|
2051
|
-
|
2052
|
-
|
2053
|
-
|
2054
|
-
|
2055
|
-
|
2063
|
+
if note.class::CalendarDepend
|
2064
|
+
instance_eval %Q{
|
2065
|
+
def #{name}(*args, &block)
|
2066
|
+
@note.send("#{name}", *(args + [self]), &block)
|
2067
|
+
end
|
2068
|
+
} unless When::Parts::MethodCash.escape(name)
|
2069
|
+
return @note.send(name, *(args + [self]), &block)
|
2070
|
+
else
|
2071
|
+
instance_eval %Q{
|
2072
|
+
def #{name}(*args, &block)
|
2073
|
+
@note.send("#{name}", *args, &block)
|
2074
|
+
end
|
2075
|
+
} unless When::Parts::MethodCash.escape(name)
|
2076
|
+
return @note.send(name, *args, &block)
|
2077
|
+
end
|
2056
2078
|
end
|
2057
2079
|
['SolarTerms', 'LunarPhases'].each do |note|
|
2058
2080
|
if When.CalendarNote(note).respond_to?(name)
|
@@ -2066,7 +2088,7 @@ module When::Coordinates
|
|
2066
2088
|
end
|
2067
2089
|
if When::Ephemeris::Formula.method_defined?(name)
|
2068
2090
|
unless respond_to?(:forwarded_formula, true)
|
2069
|
-
|
2091
|
+
extend When::Ephemeris::Formula::ForwardedFormula
|
2070
2092
|
@formula ||= When::Ephemeris::Formula.new({:location=>@location})
|
2071
2093
|
@formula = When.Resource(Array(@formula), '_ep:')
|
2072
2094
|
end
|
@@ -6,12 +6,13 @@
|
|
6
6
|
=end
|
7
7
|
|
8
8
|
#
|
9
|
-
# Ruby .8.x 系のためのための互換性確保用コード
|
9
|
+
# Ruby 1.8.x 系のためのための互換性確保用コード
|
10
10
|
#
|
11
11
|
|
12
12
|
class String
|
13
|
-
unless
|
13
|
+
unless method_defined?(:encode)
|
14
14
|
require('iconv')
|
15
|
+
#
|
15
16
|
# encode
|
16
17
|
#
|
17
18
|
# @param [String] code 文字コード
|
@@ -23,11 +24,11 @@ class String
|
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
26
|
-
unless
|
27
|
+
unless method_defined?(:to_r)
|
28
|
+
#
|
27
29
|
# to_r(もどき)
|
28
30
|
#
|
29
|
-
# 文字列を
|
30
|
-
# (できるだけ情報が落ちない型を選択)
|
31
|
+
# 文字列を Rational or Integer に変換する
|
31
32
|
#
|
32
33
|
# @return [Numeric]
|
33
34
|
def to_r
|
@@ -43,7 +44,8 @@ class String
|
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
46
|
-
unless
|
47
|
+
unless method_defined?(:ord)
|
48
|
+
#
|
47
49
|
# 文字列の先頭文字のコードを取得する
|
48
50
|
# (多バイト文字非対応)
|
49
51
|
#
|
@@ -44,10 +44,10 @@ class Time
|
|
44
44
|
#
|
45
45
|
# @note core/extension
|
46
46
|
#
|
47
|
-
def
|
47
|
+
def tm_pos(options={})
|
48
48
|
When.at(self, options)
|
49
49
|
end
|
50
|
-
alias :
|
50
|
+
alias :to_tm_pos :tm_pos
|
51
51
|
end
|
52
52
|
|
53
53
|
#
|
@@ -70,11 +70,11 @@ class Date
|
|
70
70
|
# @note 暦法の指定がない場合、start メソッドの値によって
|
71
71
|
# Julian / Gregorian / Civil 暦法を選択する
|
72
72
|
#
|
73
|
-
def
|
73
|
+
def tm_pos(options={})
|
74
74
|
options[:frame] ||= When::CalendarTypes::Christian._default_start(self)
|
75
75
|
super(options)
|
76
76
|
end
|
77
|
-
alias :
|
77
|
+
alias :to_tm_pos :tm_pos
|
78
78
|
end
|
79
79
|
|
80
80
|
alias :__method_missing :method_missing
|
@@ -83,13 +83,13 @@ class Date
|
|
83
83
|
#
|
84
84
|
# @note
|
85
85
|
# self で定義されていないメソッドは
|
86
|
-
#
|
86
|
+
# tm_pos で変換して処理する
|
87
87
|
#
|
88
88
|
def method_missing(name, *args, &block)
|
89
89
|
return __method_missing(name, *args, &block) if When::Parts::MethodCash::Escape.key?(name)
|
90
90
|
self.class.module_eval %Q{
|
91
91
|
def #{name}(*args, &block)
|
92
|
-
result =
|
92
|
+
result = tm_pos.send("#{name}", *args, &block)
|
93
93
|
case result
|
94
94
|
when When::TM::DateAndTime ; result.to_date_time
|
95
95
|
when When::TM::CalDate ; result.to_date
|
@@ -97,7 +97,7 @@ class Date
|
|
97
97
|
end
|
98
98
|
end
|
99
99
|
} unless When::Parts::MethodCash.escape(name)
|
100
|
-
result =
|
100
|
+
result = tm_pos.send(name, *args, &block)
|
101
101
|
case result
|
102
102
|
when When::TM::DateAndTime ; result.to_date_time
|
103
103
|
when When::TM::CalDate ; result.to_date
|
@@ -204,6 +204,8 @@ end
|
|
204
204
|
#
|
205
205
|
class String
|
206
206
|
|
207
|
+
include When::EncodingConversion
|
208
|
+
|
207
209
|
#
|
208
210
|
# self を When::BasicTypes::M17n に変換する
|
209
211
|
#
|
@@ -235,8 +237,8 @@ class String
|
|
235
237
|
#
|
236
238
|
# @return [String] 包摂結果
|
237
239
|
#
|
238
|
-
def ideographic_unification(pattern=When::
|
239
|
-
When::
|
240
|
+
def ideographic_unification(pattern=When::Locale._unification)
|
241
|
+
When::Locale.ideographic_unification(self, pattern)
|
240
242
|
end
|
241
243
|
|
242
244
|
#
|
@@ -357,8 +359,8 @@ class String
|
|
357
359
|
def when?(options={})
|
358
360
|
When.when?(self, options)
|
359
361
|
end
|
360
|
-
alias :
|
361
|
-
alias :
|
362
|
+
alias :tm_pos :when?
|
363
|
+
alias :to_tm_pos :when?
|
362
364
|
|
363
365
|
#
|
364
366
|
# 曜日(剰余類)
|
@@ -410,6 +412,9 @@ end
|
|
410
412
|
# Extensions to Regexp class
|
411
413
|
#
|
412
414
|
class Regexp
|
415
|
+
|
416
|
+
include When::EncodingConversion
|
417
|
+
|
413
418
|
#
|
414
419
|
# self を検索する暦年代にマッチする正規表現とみなして登録された When::TM::CalendarEraを検索
|
415
420
|
#
|
@@ -436,8 +441,8 @@ class Regexp
|
|
436
441
|
#
|
437
442
|
# @return [Regexp] 包摂結果
|
438
443
|
#
|
439
|
-
def ideographic_unification(pattern=When::
|
440
|
-
When::
|
444
|
+
def ideographic_unification(pattern=When::Locale._unification)
|
445
|
+
When::Locale.ideographic_unification(self, pattern)
|
441
446
|
end
|
442
447
|
end
|
443
448
|
|
@@ -461,10 +466,10 @@ class Array
|
|
461
466
|
#
|
462
467
|
# @note core/extension
|
463
468
|
#
|
464
|
-
def
|
469
|
+
def tm_pos(options={})
|
465
470
|
When.TemporalPosition(*(self.dup << options))
|
466
471
|
end
|
467
|
-
alias :
|
472
|
+
alias :to_tm_pos :tm_pos
|
468
473
|
|
469
474
|
# self を[幹,枝]と解釈してWhen::Coordinates::Pair を生成
|
470
475
|
#
|
@@ -477,3 +482,23 @@ class Array
|
|
477
482
|
end
|
478
483
|
alias :pair :to_pair
|
479
484
|
end
|
485
|
+
|
486
|
+
#
|
487
|
+
# Extensions to Module class
|
488
|
+
#
|
489
|
+
class Module
|
490
|
+
unless method_defined?(:_const_missing)
|
491
|
+
alias :_const_missing :const_missing
|
492
|
+
|
493
|
+
#
|
494
|
+
# When 直下に定数として定義する時法・暦法(暗黙的追加)
|
495
|
+
#
|
496
|
+
def const_missing(name)
|
497
|
+
if When.const_defined?(name)
|
498
|
+
_const_missing(name)
|
499
|
+
else
|
500
|
+
When.const_missing(name)
|
501
|
+
end
|
502
|
+
end
|
503
|
+
end
|
504
|
+
end
|
data/lib/when_exe/ephemeris.rb
CHANGED
@@ -10,20 +10,20 @@
|
|
10
10
|
#
|
11
11
|
module When::Ephemeris
|
12
12
|
|
13
|
-
autoload :Sun, 'when_exe/
|
14
|
-
autoload :Mercury, 'when_exe/
|
15
|
-
autoload :Venus, 'when_exe/
|
16
|
-
autoload :Earth, 'when_exe/
|
17
|
-
autoload :JGD2000, 'when_exe/
|
18
|
-
autoload :Mars, 'when_exe/
|
19
|
-
autoload :Jupiter, 'when_exe/
|
20
|
-
autoload :Saturn, 'when_exe/
|
21
|
-
autoload :Uranus, 'when_exe/
|
22
|
-
autoload :Neptune, 'when_exe/
|
23
|
-
autoload :Pluto, 'when_exe/
|
24
|
-
autoload :Moon, 'when_exe/
|
25
|
-
autoload :Shadow, 'when_exe/
|
26
|
-
autoload :V50, 'when_exe/
|
13
|
+
autoload :Sun, 'when_exe/ephemeris/sun'
|
14
|
+
autoload :Mercury, 'when_exe/ephemeris/planets'
|
15
|
+
autoload :Venus, 'when_exe/ephemeris/planets'
|
16
|
+
autoload :Earth, 'when_exe/ephemeris/sun'
|
17
|
+
autoload :JGD2000, 'when_exe/ephemeris/sun'
|
18
|
+
autoload :Mars, 'when_exe/ephemeris/planets'
|
19
|
+
autoload :Jupiter, 'when_exe/ephemeris/planets'
|
20
|
+
autoload :Saturn, 'when_exe/ephemeris/planets'
|
21
|
+
autoload :Uranus, 'when_exe/ephemeris/planets'
|
22
|
+
autoload :Neptune, 'when_exe/ephemeris/planets'
|
23
|
+
autoload :Pluto, 'when_exe/ephemeris/planets'
|
24
|
+
autoload :Moon, 'when_exe/ephemeris/moon'
|
25
|
+
autoload :Shadow, 'when_exe/ephemeris/moon'
|
26
|
+
autoload :V50, 'when_exe/ephemeris/v50'
|
27
27
|
autoload :Hindu, 'when_exe/region/indian'
|
28
28
|
|
29
29
|
include Math
|
@@ -336,8 +336,9 @@ module When::Ephemeris
|
|
336
336
|
y.shift
|
337
337
|
i -= 1
|
338
338
|
end
|
339
|
-
|
340
|
-
return t[
|
339
|
+
return t[2] if i > 0
|
340
|
+
return t[1] + (t[0]-t[1]) / (y[0]-y[1]) * (y0-y[1]) if y0 && count < 6
|
341
|
+
raise RangeError, "The result does not converge - #{t}->#{y}."
|
341
342
|
end
|
342
343
|
|
343
344
|
# y が周期量である場合の周期の補正
|
@@ -1118,7 +1119,7 @@ module When::Ephemeris
|
|
1118
1119
|
#
|
1119
1120
|
def eclipse(t, target, base=Earth)
|
1120
1121
|
t = +t
|
1121
|
-
distance = self.coords(t, base).spherical_law_of_cosines(target.coords(t, base)) / CIRCLE
|
1122
|
+
distance = acos(self.coords(t, base).spherical_law_of_cosines(target.coords(t, base))) / CIRCLE
|
1122
1123
|
self_radius = self.apparent_radius(t, base)
|
1123
1124
|
target_radius = target.apparent_radius(t, base)
|
1124
1125
|
return (self_radius + target_radius - distance) / (2.0 * target_radius)
|
@@ -1900,11 +1901,11 @@ module When::Ephemeris
|
|
1900
1901
|
@month_epoch = 0
|
1901
1902
|
@month_epoch = @longitude_shift -_mean_moon_(@epoch_shift).to_i
|
1902
1903
|
end
|
1903
|
-
|
1904
|
+
extend LunarMethod
|
1904
1905
|
else
|
1905
1906
|
# 太陽黄経の計算
|
1906
1907
|
@solar_degree = @year_length / 360
|
1907
|
-
|
1908
|
+
extend SolarMethod
|
1908
1909
|
end
|
1909
1910
|
super
|
1910
1911
|
end
|
@@ -5,7 +5,7 @@
|
|
5
5
|
You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
|
6
6
|
=end
|
7
7
|
|
8
|
-
require 'when_exe/
|
8
|
+
require 'when_exe/ephemeris/sun'
|
9
9
|
module When
|
10
10
|
module Ephemeris
|
11
11
|
|
@@ -324,9 +324,9 @@ module When
|
|
324
324
|
def apparent_radius(t, base=nil)
|
325
325
|
t = +t
|
326
326
|
radius = Sun.pi(t) * AU
|
327
|
-
(asin(
|
328
|
-
asin(Ephemeris::Sun
|
329
|
-
asin(
|
327
|
+
(asin(surface_radius/Moon.pi(t)) -
|
328
|
+
asin(Ephemeris::Sun::Radius/radius) +
|
329
|
+
asin(surface_radius/radius)) * 1.02 / CIRCLE
|
330
330
|
end
|
331
331
|
end
|
332
332
|
end
|
@@ -99,11 +99,31 @@ class When::CalendarNote
|
|
99
99
|
# @param [String] parameter 座標の分子と分母("#{ num }/#{ den }" の形式)
|
100
100
|
#
|
101
101
|
# @return [When::TM::IntervalLength]
|
102
|
+
#
|
103
|
+
# @private
|
102
104
|
def event_delta(parameter=nil)
|
103
105
|
return @delta unless parameter
|
104
106
|
num, den = parameter.split(/\//, 2)
|
105
107
|
When::TM::IntervalLength.new([(den || @den).to_f,1].max*0.9, 'day')
|
106
108
|
end
|
109
|
+
|
110
|
+
#
|
111
|
+
# イベント日付(時刻付)
|
112
|
+
#
|
113
|
+
# @private
|
114
|
+
def event_time(date, event_name, event)
|
115
|
+
etime = term(date - When.Duration('P3D'), event, When::SYSTEM)
|
116
|
+
if formula.respond_to?(:year_length) && formula.denominator && formula.denominator < 100000
|
117
|
+
fraction = etime.clk_time.universal_time
|
118
|
+
fraction += When::TM::Duration::DAY * (etime.to_i - date.to_i)
|
119
|
+
fraction = (fraction / When::TM::Duration::DAY * formula.denominator * 1000 + 0.5).floor / 1000.0
|
120
|
+
fraction = fraction.to_i if fraction == fraction.to_i
|
121
|
+
event_name + "(#{fraction}/#{formula.denominator})"
|
122
|
+
else
|
123
|
+
etime.events = [event_name]
|
124
|
+
etime
|
125
|
+
end
|
126
|
+
end
|
107
127
|
end
|
108
128
|
|
109
129
|
#
|
@@ -173,12 +193,11 @@ class When::CalendarNote
|
|
173
193
|
#
|
174
194
|
# 天体暦の暦注
|
175
195
|
#
|
176
|
-
class
|
196
|
+
class Ephemeris < self
|
177
197
|
|
178
|
-
|
179
|
-
"namespace:[en=http://en.wikipedia.org/wiki/, ja=http://ja.wikipedia.org/wiki/]",
|
198
|
+
Notes = [When::BasicTypes::M17n, [
|
180
199
|
"locale:[=en:, ja=ja:, alias=ja:]",
|
181
|
-
"names:[
|
200
|
+
"names:[Ephemeris]",
|
182
201
|
|
183
202
|
# 年の暦注 ----------------------------
|
184
203
|
[When::BasicTypes::M17n,
|
@@ -201,7 +220,7 @@ class When::CalendarNote
|
|
201
220
|
[When::Coordinates::Residue,
|
202
221
|
"label:[Moon_Age=, 正午月齢=ja:%%<月齢>]",
|
203
222
|
"divisor:60",
|
204
|
-
"format:[%s(%4.1f)]"
|
223
|
+
"format:[%s(%4.1f)=]"
|
205
224
|
],
|
206
225
|
"[Moonrise, 月の出 ]", # 月の出
|
207
226
|
"[Moonset=, 月の入り ]", # 月の入り
|
@@ -354,7 +373,7 @@ class When::CalendarNote
|
|
354
373
|
@formula = {}
|
355
374
|
end
|
356
375
|
@interval = @interval.sub('@','.').to_f / 24 if @interval
|
357
|
-
@root = When.CalendarNote('
|
376
|
+
@root = When.CalendarNote('Ephemeris/Notes::day')
|
358
377
|
@prime ||= [%w(Month), %w(Sunrise Sunset Moon_Age)]
|
359
378
|
super
|
360
379
|
end
|