lib/zakuro/calculation/range/transfer/year_boundary.rb in zakuro-0.7.2 vs lib/zakuro/calculation/range/transfer/year_boundary.rb in zakuro-0.8.0

- old
+ new

@@ -14,136 +14,134 @@ module Transfer # # YearBoundary 年境界 # module YearBoundary - # - # 年間範囲内の年データの開始月を変更する - # - # @param [Context::Context] context 暦コンテキスト - # @param [Array<Base::Year>] annual_ranges 年データ(冬至基準) - # - # @return [Array<Base::Year>] 年データ(元旦基準) - # - def self.get(context:, annual_ranges:) - categorize(context: context, annual_ranges: annual_ranges) - rearranged_years(context: context, annual_ranges: annual_ranges) - end + class << self + # + # 年間範囲内の年データの開始月を変更する + # + # @param [Context::Context] context 暦コンテキスト + # @param [Array<Base::Year>] annual_ranges 年データ(冬至基準) + # + # @return [Array<Base::Year>] 年データ(元旦基準) + # + def get(context:, annual_ranges:) + categorize(context: context, annual_ranges: annual_ranges) + rearranged_years(context: context, annual_ranges: annual_ranges) + end - # - # 年間範囲内の年データの開始月を変更する - # - # @param [Context::Context] context 暦コンテキスト - # @param [Array<Base::Year>] annual_ranges 年データ(冬至基準) - # - # @return [Array<Base::Year>] 年データ(元旦基準) - # - def self.rearranged_years(context:, annual_ranges:) - years = [] + private - (0..(annual_ranges.size - 2)).each do |index| - year = rearranged_year( - context: context, annual_ranges: annual_ranges, index: index - ) - years.push(year) - end + # + # 年間範囲内の年データの開始月を変更する + # + # @param [Context::Context] context 暦コンテキスト + # @param [Array<Base::Year>] annual_ranges 年データ(冬至基準) + # + # @return [Array<Base::Year>] 年データ(元旦基準) + # + def rearranged_years(context:, annual_ranges:) + years = [] - years - end - private_class_method :rearranged_years + (0..(annual_ranges.size - 2)).each do |index| + year = rearranged_year( + context: context, annual_ranges: annual_ranges, index: index + ) + years.push(year) + end - # - # 年間範囲を昨年/今年で分類する - # - # @param [Context::Context] context 暦コンテキスト - # @param [Array<Base::Year>] annual_range 1年データ - # - def self.categorize(context:, annual_ranges:) - annual_ranges.each do |annual_range| - categorize_year(context: context, annual_range: annual_range) + years end - end - private_class_method :categorize - # - # 各月を昨年/今年で分類する - # - # @param [Context::Context] context 暦コンテキスト - # @param [Array<Month>] annual_range 1年データ - # - def self.categorize_year(context:, annual_range:) - is_last_year = true - annual_range.each_with_index do |month, index| - is_last_year = false if month.number == 1 - - annual_range[index] = Monthly::InitializedMonth.new( - context: context, - month_label: month.month_label, first_day: month.first_day, - solar_terms: month.solar_terms, phase_index: month.phase_index, - is_last_year: is_last_year - ) + # + # 年間範囲を昨年/今年で分類する + # + # @param [Context::Context] context 暦コンテキスト + # @param [Array<Base::Year>] annual_range 1年データ + # + def categorize(context:, annual_ranges:) + annual_ranges.each do |annual_range| + categorize_year(context: context, annual_range: annual_range) + end end - end - private_class_method :categorize_year - # - # 年データの開始月を変更する - # - # @param [Context::Context] context 暦コンテキスト - # @param [Array<Base::Year>] annual_ranges 年データ(冬至基準) - # @param [Integer] index 対象年の要素番号 - # - # @return [Base::Year] 年データ(元旦基準) - # - def self.rearranged_year(context:, annual_ranges:, index:) - current_annual_range = annual_ranges[index] - next_annual_range = annual_ranges[index + 1] + # + # 各月を昨年/今年で分類する + # + # @param [Context::Context] context 暦コンテキスト + # @param [Array<Month>] annual_range 1年データ + # + def categorize_year(context:, annual_range:) + is_last_year = true + annual_range.each_with_index do |month, index| + is_last_year = false if month.number == 1 - year = push_current_year(context: context, annual_range: current_annual_range) - push_last_year(annual_range: next_annual_range, year: year) + annual_range[index] = Monthly::InitializedMonth.new( + context: context, + month_label: month.month_label, first_day: month.first_day, + solar_terms: month.solar_terms, phase_index: month.phase_index, + is_last_year: is_last_year + ) + end + end - year - end - private_class_method :rearranged_year + # + # 年データの開始月を変更する + # + # @param [Context::Context] context 暦コンテキスト + # @param [Array<Base::Year>] annual_ranges 年データ(冬至基準) + # @param [Integer] index 対象年の要素番号 + # + # @return [Base::Year] 年データ(元旦基準) + # + def rearranged_year(context:, annual_ranges:, index:) + current_annual_range = annual_ranges[index] + next_annual_range = annual_ranges[index + 1] - # - # 当年データを生成する - # - # @param [Context::Context] context 暦コンテキスト - # @param [Array<Month>] annual_range 1年データ - # - # @return [Base::Year] 当年月ありの対象年 - # - def self.push_current_year(context:, annual_range:) - year = Base::Year.new(context: context) - annual_range.each do |month| - next if month.is_last_year + year = push_current_year(context: context, annual_range: current_annual_range) + push_last_year(annual_range: next_annual_range, year: year) - year.push(month: month) + year end - year - end - private_class_method :push_current_year + # + # 当年データを生成する + # + # @param [Context::Context] context 暦コンテキスト + # @param [Array<Month>] annual_range 1年データ + # + # @return [Base::Year] 当年月ありの対象年 + # + def push_current_year(context:, annual_range:) + year = Base::Year.new(context: context) + annual_range.each do |month| + next if month.is_last_year - # - # 昨年データを生成する - # - # @param [Array<Month>] annual_range 1年データ - # @param [Base::Year] year 対象年 - # - # @return [Base::Year] 昨年月ありの対象年 - # - def self.push_last_year(annual_range:, year: Base::Year.new) - annual_range.each do |month| - next unless month.is_last_year + year.push(month: month) + end - year.push(month: month) + year end - year + # + # 昨年データを生成する + # + # @param [Array<Month>] annual_range 1年データ + # @param [Base::Year] year 対象年 + # + # @return [Base::Year] 昨年月ありの対象年 + # + def push_last_year(annual_range:, year: Base::Year.new) + annual_range.each do |month| + next unless month.is_last_year + + year.push(month: month) + end + + year + end end - private_class_method :push_last_year end end end end end