class Zakuro::Japan::Parser::SetParser

SetParser 元号セット情報の検証/展開

Attributes

end_date[R]

@return [String] 終了日

id[R]

@return [String] 元号セットID

list[R]

@return [Array<Hash<String, String>>] 元号情報

name[R]

@return [String] 元号セット名

Public Class Methods

new(hash:) click to toggle source

初期化

@param [Hash<String, Object>] hash 元号セット情報

# File lib/zakuro/era/japan/gengou/parser.rb, line 84
def initialize(hash:)
  @id = hash['id']
  @name = hash['name']
  @end_date = hash['end_date']
  @list = hash['list']
end

Public Instance Methods

calc_end_date_on_gengou_data(next_index:, gengou:) click to toggle source

次の元号の開始日から、元号の終了日に変換する

@param [Integer] next_index 次の元号の要素位置 @param [String] gengou 次回開始日

@return [Gengou] 元号情報

# File lib/zakuro/era/japan/gengou/parser.rb, line 134
def calc_end_date_on_gengou_data(next_index:, gengou:)
  if next_index >= @list.size
    end_date = Western::Calendar.parse(str: @end_date)
    gengou.write_end_date(end_date: end_date)
    return gengou
  end
  next_start_date = @list[next_index]['start_date']
  gengou.convert_next_start_date_to_end_date(
    next_start_date_string: next_start_date
  )
  gengou
end
create() click to toggle source

元号セット情報を生成する

@return [Set] 元号セット情報

# File lib/zakuro/era/japan/gengou/parser.rb, line 96
def create
  end_date = Western::Calendar.parse(str: @end_date)
  list = create_list
  Set.new(
    id: @id, name: @name, end_date: end_date, list: list
  )
end
create_list() click to toggle source

元号情報を生成する

@return [Array<Gengou>] 元号情報

# File lib/zakuro/era/japan/gengou/parser.rb, line 111
def create_list
  result = []
  @list.each_with_index do |li, index|
    gengou = GengouParser.new(hash: li, index: index).create
    next_index = index + 1
    gengou = calc_end_date_on_gengou_data(next_index: next_index,
                                          gengou: gengou)
    result.push(gengou)
  end

  result
end