module Zakuro::Japan::GengouResource

GengouResource 元号情報

Constants

LIST

@return [Array<Set>] 元号セット情報リスト

Public Class Methods

first_line(date:) click to toggle source

「日本暦日原典」1行目の元号を返す

@param [Western::Calendar] date 日

@return [Gengou] 元号情報(1行目)

# File lib/zakuro/era/japan/gengou.rb, line 88
def self.first_line(date:)
  lines = lines(date: date)
  lines[0].clone
end
lines(date:) click to toggle source

元号(1行目,2行目)を引き当てる

  • LINE配列の元号情報を配列順で「x行目」(1始まり)とする

  • 1行目にデータがあれば、第一要素に1行目のデータが設定される

  • 1行目と2行目にデータがあれば、第二要素に2行目のデータが設定される

  • 1行目にデータがなく、2行目以降に1つだけデータがあれば、第一要素にそのデータを設定してそれ以外の要素は未設定

  • 1行目にデータがなく、2行目以降に2つ以上のデータがあれば、第一要素に末尾行に一番近いデータを設定してそれ以外の要素は未設定

@param [Western::Calendar] date 日

@return [Array<Gengou>] 元号情報(1行目, 2行目)

# File lib/zakuro/era/japan/gengou.rb, line 48
def self.lines(date:)
  lines = native_lines(date: date)
  return lines unless lines[0].invalid?

  first = Japan::Gengou.new
  lines[1..].each.with_index(1) do |item, index|
    next if item.invalid?

    first = item
    lines[index] = Japan::Gengou.new
  end
  lines[0] = first
  lines
end
native_lines(date:) click to toggle source

元号を引き当てる

  • LISTから単純に元号を引き当てる

  • 1行目,2行目といった概念は無視する

@param [Western::Calendar] date 日

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

# File lib/zakuro/era/japan/gengou.rb, line 73
def self.native_lines(date:)
  result = Array.new(LIST.size)
  LIST.each_with_index do |set, index|
    result[index] = set.include_item(date: date)
  end
  result
end
second_line(date:) click to toggle source

「日本暦日原典」2行目の元号を返す

@param [Western::Calendar] date 日

@return [Gengou] 元号情報(2行目)

# File lib/zakuro/era/japan/gengou.rb, line 100
def self.second_line(date:)
  lines = lines(date: date)
  lines[1].clone
end