class Zakuro::Japan::Gengou

Gengou 元号情報

Attributes

end_date[R]

@return [Western::Calendar] 終了日

name[R]

@return [String] 元号名

new_year_date[R]

@return [Western::Calendar] 元旦

start_date[R]

@return [Western::Calendar] 開始日

year[R]

@return [Integer] 元号年

Public Class Methods

new(name: '', start_date: Western::Calendar.new, new_year_date: Western::Calendar.new, end_date: Western::Calendar.new, year: -1) click to toggle source

初期化

@param [String] name 元号名 @param [Western::Calendar] start_date 開始日 @param [Western::Calendar] new_year_date 元旦 @param [Western::Calendar] end_date 終了日 @param [Integer] year 元号年

# File lib/zakuro/era/japan/gengou/type.rb, line 37
def initialize(name: '', start_date: Western::Calendar.new,
               new_year_date: Western::Calendar.new,
               end_date: Western::Calendar.new, year: -1)
  @name = name
  @start_date = start_date
  @new_year_date = new_year_date
  @end_date = end_date
  @year = year
end
valid_date(date:) click to toggle source

日付が有効かどうかを確認する

@param [Western::Calendar] date 日付

@return [True] 有効 @return [False] 無効

# File lib/zakuro/era/japan/gengou/type.rb, line 69
def self.valid_date(date:)
  return false unless date

  date.is_a?(Western::Calendar)
end

Public Instance Methods

convert_next_start_date_to_end_date(next_start_date_string: '') click to toggle source

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

@param [String] next_start_date_string 次回開始日

# File lib/zakuro/era/japan/gengou/type.rb, line 80
def convert_next_start_date_to_end_date(next_start_date_string: '')
  raise ArgumentError, 'empty string cannot convert' if next_start_date_string.empty?

  start_date = Western::Calendar.parse(str: next_start_date_string)
  @end_date = start_date - 1
  nil
end
include?(date:) click to toggle source

指定した日が元号に含まれるか

@param [Western::Calendar] date 日

@return [True] 含まれる @return [False] 含まれない

# File lib/zakuro/era/japan/gengou/type.rb, line 96
def include?(date:)
  date >= @start_date && date <= @end_date
end
invalid?() click to toggle source

不正な元号データかを確認する

@return [True] 正しくない @return [True] 正しい

# File lib/zakuro/era/japan/gengou/type.rb, line 106
def invalid?
  @year == -1
end
next_year() click to toggle source

1元号年を追加する

# File lib/zakuro/era/japan/gengou/type.rb, line 113
def next_year
  @year += 1 unless invalid?
  nil
end
to_s() click to toggle source
# File lib/zakuro/era/japan/gengou/type.rb, line 118
def to_s
  "name: #{@name}, start_date: #{@start_date.format}, " \
  "end_date: #{@end_date.format}, year: #{@year}"
end
write_end_date(end_date:) click to toggle source

終了日を更新する

@param [Western::Calendar] end_date 終了日

# File lib/zakuro/era/japan/gengou/type.rb, line 52
def write_end_date(end_date:)
  unless Gengou.valid_date(date: end_date)
    raise ArgumentError, "invalid date format. [#{end_date}]"
  end

  @end_date = end_date
  nil
end