module Zakuro::Calculation::Specifier::SingleDay
SingleDay
一日検索
Constants
- LOGGER
@return [Output::Logger] ロガー
Public Class Methods
get(years: [], date: Western::Calendar.new)
click to toggle source
取得する
@param [Array<Year>] yeas 範囲 @param [Western::Calendar] date 西暦日
@return [Result::Data::SingleDay] 和暦日
# File lib/zakuro/calculation/specifier/single_day.rb, line 31 def self.get(years: [], date: Western::Calendar.new) year = specify_year(years: years, date: date) year = transfer(year: year, date: date) month = specify_month(year: year, date: date) first_date = month.western_date Output::Response::SingleDay.save_single_day( param: Output::Response::SingleDay::Param.new( year: year, month: month, date: date, days: date - first_date ) ) end
Private Class Methods
specify_month(year:, date:)
click to toggle source
月を特定する
@param [Year] year 年 @param [Western::Calendar] date 西暦日
@return [Month] 対象月
# File lib/zakuro/calculation/specifier/single_day.rb, line 93 def self.specify_month(year:, date:) months = year.months current_month = months[0] months.each do |month| return current_month if month.western_date > date current_month = month end current_month end
specify_year(years:, date:)
click to toggle source
年を特定する
@param [Array<Year>] years 範囲 @param [Western::Calendar] date 西暦日
@return [Year] 対象年
# File lib/zakuro/calculation/specifier/single_day.rb, line 55 def self.specify_year(years:, date:) years.reverse_each do |year| return year if date >= year.new_year_date end raise ArgumentError, "invalid year range. date: #{date.format}" end
transfer(year:, date:)
click to toggle source
改元する
@param [Year] year 年 @param [Western::Calendar] date 西暦日
@return [Year] 改元後の年
# File lib/zakuro/calculation/specifier/single_day.rb, line 72 def self.transfer(year:, date:) multi_gengou = Calculation::Base::MultiGengouRoller.transfer( multi_gengou: year.multi_gengou, date: date ) Calculation::Base::Year.new( multi_gengou: multi_gengou, new_year_date: year.new_year_date, months: year.months, total_days: year.total_days ) end