Class: Zakuro::Japan::Version::Resource::Parser::RootParser

Inherits:
Object
  • Object
show all
Defined in:
lib/zakuro/era/japan/version/resource/parser.rb

Overview

RootParser 暦期間情報の検証/展開

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash:) ⇒ RootParser

初期化

Parameters:

  • hash (Hash<String, Object>)

    暦期間情報



83
84
85
86
87
88
89
# File 'lib/zakuro/era/japan/version/resource/parser.rb', line 83

def initialize(hash:)
  @id = hash['id']
  @name = hash['name']
  @last_year = hash['last_year']
  @last_date = hash['last_date']
  @list = hash['list']
end

Instance Attribute Details

#last_dateHash<String, String> (readonly)

Returns 終了日.

Returns:

  • (Hash<String, String>)

    終了日



74
75
76
# File 'lib/zakuro/era/japan/version/resource/parser.rb', line 74

def last_date
  @last_date
end

#last_yearHash<String, String> (readonly)

Returns 終了年.

Returns:

  • (Hash<String, String>)

    終了年



72
73
74
# File 'lib/zakuro/era/japan/version/resource/parser.rb', line 72

def last_year
  @last_year
end

#listArray<Hash<String, String>> (readonly)

Returns 暦期間情報.

Returns:

  • (Array<Hash<String, String>>)

    暦期間情報



76
77
78
# File 'lib/zakuro/era/japan/version/resource/parser.rb', line 76

def list
  @list
end

Instance Method Details

#calc_last_date_on_range_data(next_index:, range:) ⇒ Range

次の暦期間の開始日から、暦期間の終了日に変換する

Parameters:

  • next_index (Integer)

    次の暦期間の要素位置

  • range (RangeParser)

    暦期間

Returns:

  • (Range)

    暦期間情報



130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/zakuro/era/japan/version/resource/parser.rb', line 130

def calc_last_date_on_range_data(next_index:, range:)
  if next_index >= list.size
    last_range_data(range: range)
    return range
  end
  next_item = list[next_index]
  next_start_date = Both::DateParser.new(
    hash: next_item['start_date']
  ).create

  range.convert_next_start_year_to_last_year(
    next_start_year: next_item['start_year']['western']
  )
  range.convert_next_start_date_to_last_date(
    next_start_date: next_start_date.western
  )
  range
end

#createArray<Range>

暦期間情報を生成する

Returns:

  • (Array<Range>)

    暦期間情報



96
97
98
99
100
# File 'lib/zakuro/era/japan/version/resource/parser.rb', line 96

def create
  Both::DateParser.new(hash: last_date).create

  create_list
end

#create_listArray<Range>

暦期間情報を生成する

Returns:

  • (Array<Range>)

    暦期間情報



109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/zakuro/era/japan/version/resource/parser.rb', line 109

def create_list
  result = []
  list.each_with_index do |li, index|
    range = RangeParser.new(hash: li, index: index).create
    next_index = index + 1
    range = calc_last_date_on_range_data(next_index: next_index,
                                         range: range)
    result.push(range)
  end

  result
end