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