Class: Zakuro::Calculation::Gengou::Reserve::AbstractRange
- Inherits:
-
Object
- Object
- Zakuro::Calculation::Gengou::Reserve::AbstractRange
- Defined in:
- lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb
Overview
AbstractRange 予約済み計算範囲
Direct Known Subclasses
Instance Attribute Summary collapse
-
#first_list ⇒ List
readonly
1行目元号.
-
#second_list ⇒ List
readonly
2行目元号.
Instance Method Summary collapse
-
#collect_first(start_date: Western::Calendar.new, last_date: Western::Calendar.new) ⇒ Array<Gengou::Counter>
範囲内元号(1行目元号)を取得する.
-
#collect_second(start_date: Western::Calendar.new, last_date: Western::Calendar.new) ⇒ Array<Gengou::Counter>
範囲内元号(2行目元号)を取得する.
-
#initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new, operated: false, restored: false) ⇒ AbstractRange
constructor
初期化.
-
#invalid? ⇒ True, False
不正か.
-
#japan_start_date ⇒ Japan::Calendar
最古の元号から和暦開始日を取得する.
-
#renew(last_date: Western::Calendar.new, operated: false, restored: false) ⇒ Object
再初期化 含まれる最初の元号が別の行にまたがっている場合に開始日を前倒しする.
-
#western_last_year ⇒ Integer
終了西暦年を取得する.
-
#western_start_date ⇒ Western::Calendar
最古の元号から西暦開始日を取得する.
-
#western_start_year ⇒ Integer
開始西暦年を取得する.
Constructor Details
#initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new, operated: false, restored: false) ⇒ AbstractRange
初期化
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb', line 32 def initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new, operated: false, restored: false) last_date = start_date.clone if last_date.invalid? @first_list = DatedList.new( first: true, start_date: start_date, last_date: last_date, operated: operated, restored: restored ) @second_list = DatedList.new( first: false, start_date: start_date, last_date: last_date, operated: operated, restored: restored ) renew(last_date: last_date, operated: operated, restored: restored) end |
Instance Attribute Details
#first_list ⇒ List (readonly)
Returns 1行目元号.
20 21 22 |
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb', line 20 def first_list @first_list end |
#second_list ⇒ List (readonly)
Returns 2行目元号.
22 23 24 |
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb', line 22 def second_list @second_list end |
Instance Method Details
#collect_first(start_date: Western::Calendar.new, last_date: Western::Calendar.new) ⇒ Array<Gengou::Counter>
範囲内元号(1行目元号)を取得する
89 90 91 92 |
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb', line 89 def collect_first(start_date: Western::Calendar.new, last_date: Western::Calendar.new) first_list.collect(start_date: start_date, last_date: last_date) end |
#collect_second(start_date: Western::Calendar.new, last_date: Western::Calendar.new) ⇒ Array<Gengou::Counter>
範囲内元号(2行目元号)を取得する
102 103 104 105 |
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb', line 102 def collect_second(start_date: Western::Calendar.new, last_date: Western::Calendar.new) second_list.collect(start_date: start_date, last_date: last_date) end |
#invalid? ⇒ True, False
不正か
77 78 79 |
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb', line 77 def invalid? first_list.invalid? end |
#japan_start_date ⇒ Japan::Calendar
最古の元号から和暦開始日を取得する
112 113 114 115 116 117 118 |
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb', line 112 def japan_start_date list = oldest_list return Japan::Calendar.new if list.invalid? list.japan_start_date end |
#renew(last_date: Western::Calendar.new, operated: false, restored: false) ⇒ Object
再初期化
56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb', line 56 def renew(last_date: Western::Calendar.new, operated: false, restored: false) start_date = native_start_date return if start_date.invalid? @first_list = DatedList.new( first: true, start_date: start_date, last_date: last_date, operated: operated, restored: restored ) @second_list = DatedList.new( first: false, start_date: start_date, last_date: last_date, operated: operated, restored: restored ) end |
#western_last_year ⇒ Integer
終了西暦年を取得する
156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb', line 156 def western_last_year first_last_year = first_list.western_last_year second_last_year = second_list.western_last_year return second_last_year if first_list.invalid? return first_last_year if second_list.invalid? return first_last_year if first_last_year > second_last_year second_last_year end |
#western_start_date ⇒ Western::Calendar
最古の元号から西暦開始日を取得する
125 126 127 128 129 130 131 |
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb', line 125 def western_start_date list = oldest_list return Western::Calendar.new if list.invalid? list.western_start_date end |
#western_start_year ⇒ Integer
開始西暦年を取得する
138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb', line 138 def western_start_year first_start_year = first_list.western_start_year second_start_year = second_list.western_start_year return first_start_year if first_list.invalid? return first_start_year if second_list.invalid? return first_start_year if first_start_year < second_start_year second_start_year end |