Class: Zakuro::Calculation::Gengou::Reserve::AbstractRange

Inherits:
Object
  • Object
show all
Defined in:
lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb

Overview

AbstractRange 予約済み計算範囲

Direct Known Subclasses

DatedRange, NamedRange

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new, operated: false, restored: false) ⇒ AbstractRange

初期化

Parameters:

  • start_date (Western::Calendar) (defaults to: Western::Calendar.new)

    西暦開始日

  • last_date (Western::Calendar) (defaults to: Western::Calendar.new)

    西暦終了日

  • operated (True, False) (defaults to: false)

    運用値設定

  • restored (True, False) (defaults to: false)

    運用値から計算値に戻すか



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_listList (readonly)

Returns 1行目元号.

Returns:

  • (List)

    1行目元号



20
21
22
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_range.rb', line 20

def first_list
  @first_list
end

#second_listList (readonly)

Returns 2行目元号.

Returns:

  • (List)

    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行目元号)を取得する

Parameters:

  • start_date (Western::Calendar) (defaults to: Western::Calendar.new)

    西暦開始日

  • last_date (Western::Calendar) (defaults to: Western::Calendar.new)

    西暦終了日

Returns:



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行目元号)を取得する

Parameters:

  • start_date (Western::Calendar) (defaults to: Western::Calendar.new)

    西暦開始日

  • last_date (Western::Calendar) (defaults to: Western::Calendar.new)

    西暦終了日

Returns:



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

不正か

Returns:

  • (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_dateJapan::Calendar

最古の元号から和暦開始日を取得する

Returns:



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

再初期化

Parameters:

  • last_date (Western::Calendar) (defaults to: Western::Calendar.new)

    西暦終了日

  • operated (True, False) (defaults to: false)

    運用値設定

  • restored (True, False) (defaults to: false)

    運用値から計算値に戻すか



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_yearInteger

終了西暦年を取得する

Returns:

  • (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_dateWestern::Calendar

最古の元号から西暦開始日を取得する

Returns:



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_yearInteger

開始西暦年を取得する

Returns:

  • (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