lib/zakuro/calculation/era/gengou/internal/publisher.rb in zakuro-0.7.2 vs lib/zakuro/calculation/era/gengou/internal/publisher.rb in zakuro-0.8.0
- old
+ new
@@ -12,92 +12,94 @@
# Publisher
#
# 元号発行
#
module Publisher
- #
- # 発行する
- #
- # @param [Western::Calendar] start_date 西暦開始日
- # @param [Western::Calendar] last_date 西暦終了日
- # @param [Array<Counter>] first_gengou 1行目元号
- # @param [Array<Counter>] second_gengou 2行目元号
- #
- # @return [Base::Gengou] 元号
- #
- def self.run(start_date: Western::Calendar.new, last_date: Western::Calendar.new,
- first_gengou: [], second_gengou: [])
+ class << self
+ #
+ # 発行する
+ #
+ # @param [Western::Calendar] start_date 西暦開始日
+ # @param [Western::Calendar] last_date 西暦終了日
+ # @param [Array<Counter>] first_gengou 1行目元号
+ # @param [Array<Counter>] second_gengou 2行目元号
+ #
+ # @return [Base::Gengou] 元号
+ #
+ def run(start_date: Western::Calendar.new, last_date: Western::Calendar.new,
+ first_gengou: [], second_gengou: [])
- Base::Gengou.new(
- start_date: start_date,
- last_date: last_date,
- first_line: to_linear_gengou(
- start_date: start_date, last_date: last_date, gengou_list: first_gengou
- ),
- second_line: to_linear_gengou(
- start_date: start_date, last_date: last_date, gengou_list: second_gengou
+ Base::Gengou.new(
+ start_date: start_date,
+ last_date: last_date,
+ first_line: to_linear_gengou(
+ start_date: start_date, last_date: last_date, gengou_list: first_gengou
+ ),
+ second_line: to_linear_gengou(
+ start_date: start_date, last_date: last_date, gengou_list: second_gengou
+ )
)
- )
- end
+ end
- #
- # 直列元号に変換する
- #
- # * 最初の元号:開始日~その元号の終了日
- # * 中間の元号:その元号の開始日~その元号の終了日
- # * 最後の元号:その元号の開始日~終了日
- #
- # @param [Western::Calendar] start_date 西暦開始日
- # @param [Western::Calendar] last_date 西暦終了日
- # @param [Array<Counter>] gengou_list 元号リスト
- #
- # @return [Array<Base::LinearGengou>] 元号リスト
- #
- def self.to_linear_gengou(start_date:, last_date:, gengou_list: [])
- return [] if gengou_list.size.zero?
+ #
+ # 直列元号に変換する
+ #
+ # * 最初の元号:開始日~その元号の終了日
+ # * 中間の元号:その元号の開始日~その元号の終了日
+ # * 最後の元号:その元号の開始日~終了日
+ #
+ # @param [Western::Calendar] start_date 西暦開始日
+ # @param [Western::Calendar] last_date 西暦終了日
+ # @param [Array<Counter>] gengou_list 元号リスト
+ #
+ # @return [Array<Base::LinearGengou>] 元号リスト
+ #
+ def to_linear_gengou(start_date:, last_date:, gengou_list: [])
+ return [] if gengou_list.size.zero?
- result = []
+ result = []
- gengou_list.each do |gengou|
- if gengou.invalid?
- # 無効元号は無効のままにする
- result.push(Base::LinearGengou.new)
- next
+ gengou_list.each do |gengou|
+ if gengou.invalid?
+ # 無効元号は無効のままにする
+ result.push(Base::LinearGengou.new)
+ next
+ end
+
+ linear_gengou = to_limited_linear_gengou(
+ start_date: start_date,
+ last_date: last_date,
+ gengou: gengou
+ )
+ result.push(linear_gengou)
end
- linear_gengou = to_limited_linear_gengou(
- start_date: start_date,
- last_date: last_date,
- gengou: gengou
- )
- result.push(linear_gengou)
+ result
end
- result
- end
+ #
+ # 範囲を限定した直列元号に変換する
+ #
+ # * 開始日・終了日により範囲を狭める
+ #
+ # @param [Western::Calendar] start_date 西暦開始日
+ # @param [Western::Calendar] last_date 西暦終了日
+ # @param [Counter] gengou 加算元号
+ #
+ # @return [Base::LinearGengou] 元号
+ #
+ def to_limited_linear_gengou(start_date:, last_date:, gengou:)
+ gengou_start_date = gengou.western_start_date.clone
+ gengou_last_date = gengou.western_last_date.clone
- #
- # 範囲を限定した直列元号に変換する
- #
- # * 開始日・終了日により範囲を狭める
- #
- # @param [Western::Calendar] start_date 西暦開始日
- # @param [Western::Calendar] last_date 西暦終了日
- # @param [Counter] gengou 加算元号
- #
- # @return [Base::LinearGengou] 元号
- #
- def self.to_limited_linear_gengou(start_date:, last_date:, gengou:)
- gengou_start_date = gengou.western_start_date.clone
- gengou_last_date = gengou.western_last_date.clone
+ gengou_start_date = start_date.clone if start_date > gengou_start_date
+ gengou_last_date = last_date.clone if last_date < gengou_last_date
- gengou_start_date = start_date.clone if start_date > gengou_start_date
- gengou_last_date = last_date.clone if last_date < gengou_last_date
-
- Base::LinearGengou.new(
- start_date: gengou_start_date, last_date: gengou_last_date,
- name: gengou.name, year: gengou.japan_year
- )
+ Base::LinearGengou.new(
+ start_date: gengou_start_date, last_date: gengou_last_date,
+ name: gengou.name, year: gengou.japan_year
+ )
+ end
end
end
end
end
end