Class: Zakuro::Calculation::Gengou::AbstractScroll
- Inherits:
-
Object
- Object
- Zakuro::Calculation::Gengou::AbstractScroll
- Defined in:
- lib/zakuro/calculation/era/gengou/abstract_scroll.rb
Overview
AbstractScroll
元号スクロール
Direct Known Subclasses
Instance Attribute Summary collapse
-
#connector ⇒ Connector
readonly
行変更済元号.
-
#first_gengou ⇒ Array<Counter>
readonly
1行目元号.
-
#monthly_last_date ⇒ Western::Calendar
readonly
月末日.
-
#monthly_start_date ⇒ Western::Calendar
readonly
月初日.
-
#range ⇒ Reserve::AbstractRange
readonly
予約範囲.
-
#second_gengou ⇒ Array<Counter>
readonly
2行目元号.
Instance Method Summary collapse
-
#advance(month:) ⇒ Object
進める.
-
#ignite(month:) ⇒ True, False
元号開始を試みる.
-
#initialize(range:) ⇒ AbstractScroll
constructor
初期化.
-
#run(month:) ⇒ Object
進める.
-
#to_gengou ⇒ Base::Gengou
共通の元号に変換する.
-
#western_last_year ⇒ Integer
終了西暦年を取得する.
-
#western_start_year ⇒ Integer
開始西暦年を取得する.
Constructor Details
#initialize(range:) ⇒ AbstractScroll
初期化
38 39 40 41 42 43 44 45 46 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 38 def initialize(range:) @monthly_start_date = Western::Calendar.new @monthly_last_date = Western::Calendar.new @range = range @first_gengou = [] @second_gengou = [] @ignited = false @connector = Connector.new end |
Instance Attribute Details
#connector ⇒ Connector (readonly)
31 32 33 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 31 def connector @connector end |
#first_gengou ⇒ Array<Counter> (readonly)
27 28 29 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 27 def first_gengou @first_gengou end |
#monthly_last_date ⇒ Western::Calendar (readonly)
23 24 25 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 23 def monthly_last_date @monthly_last_date end |
#monthly_start_date ⇒ Western::Calendar (readonly)
21 22 23 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 21 def monthly_start_date @monthly_start_date end |
#range ⇒ Reserve::AbstractRange (readonly)
25 26 27 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 25 def range @range end |
#second_gengou ⇒ Array<Counter> (readonly)
29 30 31 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 29 def second_gengou @second_gengou end |
Instance Method Details
#advance(month:) ⇒ Object
進める
87 88 89 90 91 92 93 94 95 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 87 def advance(month:) @monthly_start_date = monthly_last_date.clone + 1 @monthly_last_date = monthly_start_date.clone + month.days - 1 next_year if month.number == 1 && !month.leaped? update_current_gengou end |
#ignite(month:) ⇒ True, False
元号開始を試みる
72 73 74 75 76 77 78 79 80 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 72 def ignite(month:) return false unless ignitable?(month: month) first_monthly_date(month: month) update_current_gengou true end |
#run(month:) ⇒ Object
進める
53 54 55 56 57 58 59 60 61 62 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 53 def run(month:) unless @ignited # 開始日の検索を行う @ignited = ignite(month: month) return end # 時間を進める advance(month: month) end |
#to_gengou ⇒ Base::Gengou
共通の元号に変換する
102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 102 def to_gengou start_date = monthly_start_date.clone last_date = monthly_last_date.clone # 行を超えた元号切り替え処理 continue_year Publisher.run( start_date: start_date, last_date: last_date, first_gengou: first_gengou, second_gengou: second_gengou ) end |
#western_last_year ⇒ Integer
終了西暦年を取得する
129 130 131 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 129 def western_last_year range.western_last_year end |
#western_start_year ⇒ Integer
開始西暦年を取得する
120 121 122 |
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 120 def western_start_year range.western_start_year end |