Class: Zakuro::Calculation::Gengou::Reserve::AbstractList

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

Overview

AbstractList

抽象予約元号一覧

Direct Known Subclasses

DatedList, NamedList

Constant Summary collapse

INVALID_YEAR =

Returns 不正年.

Returns:

  • (Integer)

    不正年

-1
# @return [Integer] 最大月日数
MAX_MONTH_DAYS =

Returns 最大月日数.

Returns:

  • (Integer)

    最大月日数

30

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

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

初期化

Parameters:

  • index (Integer)

    n行目元号

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

    開始日

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

    終了日

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

    運用値設定

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

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



54
55
56
57
58
59
60
61
62
63
64
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 54

def initialize(index:, start_date: Western::Calendar.new,
               last_date: Western::Calendar, operated: false, restored: false)
  @index = index
  @start_date = start_date.clone
  @last_date = last_date.clone
  @operated = operated
  @restored = restored
  @list = []

  update
end

Instance Attribute Details

#indexSymbol (readonly)

Returns 行番号.

Returns:

  • (Symbol)

    行番号



31
32
33
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 31

def index
  @index
end

#last_dateWestern::Calendar (readonly)

Returns 終了日.

Returns:



35
36
37
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 35

def last_date
  @last_date
end

#listArray<Japan::Alignment::LinearGengou> (readonly)

Returns 予約元号一覧.

Returns:

  • (Array<Japan::Alignment::LinearGengou>)

    予約元号一覧



43
44
45
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 43

def list
  @list
end

#operatedTrue, False (readonly)

Returns:

  • (True)

    運用値あり

  • (False)

    運用値なし



38
39
40
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 38

def operated
  @operated
end

#restoredTrue, False (readonly)

Returns:

  • (True)

    運用値から計算値に戻す

  • (False)

    運用値から計算値に戻さない



41
42
43
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 41

def restored
  @restored
end

#start_dateWestern::Calendar (readonly)

Returns 開始日.

Returns:



33
34
35
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 33

def start_date
  @start_date
end

Instance Method Details

#change_start_date?True, False

開始日が設定された開始日と異なるか(行が変更されているか)

Returns:

  • (True)

    異なる

  • (False)

    同一



199
200
201
202
203
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 199

def change_start_date?
  return false if list.empty?

  list[0].change_start_date?
end

#collect(start_date: Western::Calendar.new, last_date: Western::Calendar.new) ⇒ Array<Gengou::Counter>

範囲内元号を取得する

Parameters:

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

    西暦開始日

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

    西暦終了日

Returns:



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 91

def collect(start_date: Western::Calendar.new, last_date: Western::Calendar.new)
  result = []

  list.each do |linear_gengou|
    next if linear_gengou.out?(start_date: start_date, last_date: last_date)

    result.push(
      Gengou::Counter.new(
        gengou: linear_gengou.gengou.clone,
        start_date: linear_gengou.start_date.clone,
        last_date: linear_gengou.last_date.clone
      )
    )
  end

  EmptyLink.fill(counters: result, start_date: start_date, last_date: last_date)

  result
end

#get(western_date: Western::Calendar.new) ⇒ Gengou::Counter

元号を取得する

Parameters:

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

    西暦日

Returns:



73
74
75
76
77
78
79
80
81
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 73

def get(western_date: Western::Calendar.new)
  list.each do |linear_gengou|
    next if linear_gengou.out?(start_date: western_date, last_date: western_date)

    Gengou::Counter.new(gengou: linear_gengou.gengou).clone
  end

  Gengou::Counter.new
end

#invalid?True, False

不正か

Returns:

  • (True)

    不正

  • (False)

    不正なし



174
175
176
177
178
179
180
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 174

def invalid?
  return true unless list

  return true if list.empty?

  false
end

#japan_start_dateJapan::Calendar

和暦開始日を取得する

Returns:



116
117
118
119
120
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 116

def japan_start_date
  return Japan::Calendar.new if invalid?

  list[0].gengou.start_date.japan.clone
end

#native_start_dateWestern::Calendar

設定された元号の開始日を取得する

Returns:



187
188
189
190
191
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 187

def native_start_date
  return Western::Calendar.new if list.empty?

  list[0].native_start_date
end

#western_last_dateWestern::Calendar

西暦終了日を取得する

Returns:



138
139
140
141
142
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 138

def western_last_date
  return Western::Calendar.new if invalid?

  list[-1].gengou.last_date.clone
end

#western_last_yearInteger

西暦終了年を取得する

Returns:

  • (Integer)

    西暦終了年



160
161
162
163
164
165
166
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 160

def western_last_year
  return INVALID_YEAR if invalid?

  return INVALID_YEAR if list.empty?

  list[-1].gengou.last_year
end

#western_start_dateWestern::Calendar

西暦開始日を取得する

Returns:



127
128
129
130
131
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 127

def western_start_date
  return Western::Calendar.new if invalid?

  list[0].gengou.start_date.western.clone
end

#western_start_yearInteger

西暦開始年を取得する

Returns:

  • (Integer)

    西暦開始年



149
150
151
152
153
# File 'lib/zakuro/calculation/era/gengou/internal/reserve/abstract_list.rb', line 149

def western_start_year
  return INVALID_YEAR if invalid?

  list[0].gengou.start_year.western.clone
end