Class Index [+]

Quicksearch

When::CalendarTypes::Chinese

Chinese Luni-Solar Calendar

Private Instance Methods

_base_ids_(y) click to toggle source

天正冬至月から1年分の翻訳表の取得

  y       : 年

  returns : [When::Coordinates::Pair]
    天正冬至月から1年分の翻訳表
     # File when/region/chinese.rb, line 121
121:       def _base_ids_(y)
122:         _intercalary_pattern(y,12)[1..1].inject([Pair._force_pair(@base_month, 0)]) do |base_ids, flag|
123:           base_ids << (flag ? Pair._force_pair(base_ids[1].trunk, 1) : Pair._force_pair(base_ids[1].trunk % 12 + 1, 0))
124:         end
125:       end
_base_month_(y) click to toggle source

天正冬至月の通月

  y       : 年

  returns : 天正冬至月の通月
    # File when/region/chinese.rb, line 94
94:       def _base_month_(y)
95:         (Residue.mod((@formula[0].cn_to_time(12*(y-1) + @base_month - @vernal_month) + 0.5 + @timezone[0]).floor) {|m|
96:           _new_month(m)
97:         })[0]
98:       end
_ids_(date) click to toggle source

暦年の翻訳表の取得

  date    : [y]
    y - 年

  returns : [When::Coordinates::Pair]
    暦年の翻訳表
     # File when/region/chinese.rb, line 108
108:       def _ids_(date)
109:         y = +date[0]
110:         return _base_ids(y) if @base_month == 1
111:         (_base_ids(y).dup.delete_if {|v| v.trunk >= @base_month}) + (_base_ids(y+1).dup.delete_if {|v| v.trunk < @base_month})
112:       end
_intercalary?(m) click to toggle source

指定の月の中気の有無

 m       : 通月

 returns : Boolean
   true  - 中気無し
   false - 中気有り
     # File when/region/chinese.rb, line 160
160:       def _intercalary?(m)
161:         e = _new_month(m+1) - 1
162:         d = Residue.mod(e) {|n| _new_epoch(n)}
163:         e - d[1] < _new_month(m)
164:       end
_intercalary_pattern(y, n) click to toggle source

天正冬至月から1年分の閏月のパターンの取得

  y       : 年

  returns : [Boolean]
    true  - 閏月である
    false - 閏月でない
     # File when/region/chinese.rb, line 135
135:       def _intercalary_pattern(y, n)
136:         m0 = _base_month(y)
137:         m1 = _base_month(y + n/12.0)
138:         return Array.new(n, false) if m1-m0 == n
139:         return Array.new(n+1) {|i| i==@intercalary_month} if @intercalary_month # for 四分暦
140:         return _intercalary_pattern(y, n/2) + _intercalary_pattern(y + n/24.0, n/2) if n > @intercalary_span
141:         flags = Array.new(n+1, false)
142:         n.times do |i|
143:           m0 += 1
144:           if _intercalary?(m0)
145:             flags[i+1] = true
146:             return flags
147:           end
148:         end
149:         raise ArgumrntError, "Intercalary month not found"
150:       end
_new_year_month_(y) click to toggle source

正月の通月

  y       : 年

  returns : 正月の通月
    # File when/region/chinese.rb, line 76
76:       def _new_year_month_(y)
77:         return _base_month(y) if @base_month == 1
78:         intercalary = 0
79:         _ids([y-1]).each do |v|
80:           unless v.branch == 0
81:             intercalary = v.trunk
82:             break
83:           end
84:         end
85:         _base_month(y) - @base_month + (intercalary>=@base_month ? 14 : 13)
86:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.