class Zakuro::Calculation::Cycle::AbstractSolarTerm
AbstractSolarTerm
二十四節気
Constants
- ORDER
@return [Hash<Integer, Symbol>] 順序
Attributes
average[R]
@return [AbstractRemainder] 気策(24分の1年)
index[R]
@return [Integer] 連番
remainder[R]
@return [AbstractRemainder] 時刻情報(大余小余)
Public Class Methods
index?(index)
click to toggle source
有効な二十四節気番号か
@param [Integer] index 連番
@return [True] 有効 @return [False] 無効
# File lib/zakuro/calculation/cycle/abstract_solar_term.rb, line 91 def self.index?(index) result = ORDER.fetch(index, -1) result != -1 end
new(index: -1, remainder: AbstractRemainder.new, average: AbstractRemainder.new)
click to toggle source
初期化
@param [Integer] index 連番 @param [AbstractRemainder] remainder 時刻情報(大余小余)
# File lib/zakuro/calculation/cycle/abstract_solar_term.rb, line 56 def initialize(index: -1, remainder: AbstractRemainder.new, average: AbstractRemainder.new) @index = index @remainder = remainder @average = average end
Public Instance Methods
empty?()
click to toggle source
データなしかを検証する
@return [True] データなし @return [False] データあり
# File lib/zakuro/calculation/cycle/abstract_solar_term.rb, line 79 def empty? (@index == -1 && @remainder.invalid?) end
initialize_copy(obj)
click to toggle source
ディープコピー
@param [SolarTerm] obj 自身
# File lib/zakuro/calculation/cycle/abstract_solar_term.rb, line 166 def initialize_copy(obj) @index = obj.index.clone @remainder = obj.remainder.clone end
invalid?()
click to toggle source
不正かどうか検証する
@return [True] 正しくない @return [False] 正しい
# File lib/zakuro/calculation/cycle/abstract_solar_term.rb, line 69 def invalid? (@index == -1 || @remainder.invalid?) end
next_by_index(index)
click to toggle source
指定した連番の二十四節気まで進める
@param [Integer] index 連番
# File lib/zakuro/calculation/cycle/abstract_solar_term.rb, line 119 def next_by_index(index) return ArgumentError.new, 'invalid index' unless AbstractSolarTerm.index?(index) loop do return if @index == index next! end end
next_term()
click to toggle source
次の二十四節気に進める
# File lib/zakuro/calculation/cycle/abstract_solar_term.rb, line 107 def next_term @index += 1 @index = 0 if @index >= ORDER.size @remainder.add(@average) end
next_term!()
click to toggle source
次の二十四節気に進める
# File lib/zakuro/calculation/cycle/abstract_solar_term.rb, line 100 def next_term! @remainder = next_term end
prev_by_index(index)
click to toggle source
指定した連番の二十四節気まで戻す
@param [Integer] index 連番
# File lib/zakuro/calculation/cycle/abstract_solar_term.rb, line 134 def prev_by_index(index) return ArgumentError.new, 'invalid index' unless AbstractSolarTerm.index?(index) loop do return if @index == index prev_term! end end
prev_term()
click to toggle source
前の二十四節気に戻る
# File lib/zakuro/calculation/cycle/abstract_solar_term.rb, line 154 def prev_term @index -= 1 @index = 23 if @index.negative? @remainder.sub(@average) end
prev_term!()
click to toggle source
前の二十四節気に戻る
# File lib/zakuro/calculation/cycle/abstract_solar_term.rb, line 147 def prev_term! @remainder = prev_term end