lib/zakuro/era/japan.rb in zakuro-0.0.1 vs lib/zakuro/era/japan.rb in zakuro-0.0.2
- old
+ new
@@ -95,27 +95,32 @@
class Gengou
# @return [String] 元号名
attr_reader :name
# @return [Western::Calendar] 開始日
attr_reader :start_date
+ # @return [Western::Calendar] 元旦
+ attr_reader :new_year_date
# @return [Western::Calendar] 終了日
attr_reader :end_date
# @return [Integer] 元号年
attr_reader :year
#
# 初期化
#
- # @param [<Type>] name 元号名
- # @param [<Type>] start_date 開始日
- # @param [<Type>] end_date 終了日
- # @param [<Type>] year 元号年
+ # @param [String] name 元号名
+ # @param [Western::Calendar] start_date 開始日
+ # @param [Western::Calendar] new_year_date 元旦
+ # @param [Western::Calendar] end_date 終了日
+ # @param [Integer] year 元号年
#
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
#
@@ -183,13 +188,18 @@
#
# 1元号年を追加する
#
def next_year
- @year += 1
+ @year += 1 unless invalid?
nil
end
+
+ def to_s
+ "name: #{@name}, start_date: #{@start_date.format}, " \
+ "end_date: #{@end_date.format}, year: #{@year}"
+ end
end
#
# Set 元号セット
#
@@ -267,10 +277,12 @@
attr_reader :index
# @return [String] 元号名
attr_reader :name
# @return [String] 開始日
attr_reader :start_date
+ # @return [String] 元旦
+ attr_reader :new_year_date
# @return [String] 開始年
attr_reader :start_year
#
# 初期化
@@ -280,10 +292,11 @@
#
def initialize(hash:, index:)
@index = index
@name = hash['name']
@start_date = hash['start_date']
+ @new_year_date = hash['new_year_date']
@start_year = hash['start_year']
end
# :reek:TooManyStatements { max_statements: 6 }
@@ -296,13 +309,18 @@
prefix = "list[#{index}]. "
failed = []
failed.push(prefix + "invalid name. #{@name}") unless valid_name_type?
- failed.push(prefix + "invalid start_date. #{@start_date}") unless valid_date_type?
+ failed.push(prefix + "invalid start_date. #{@start_date}") unless valid_start_date_type?
failed.push(prefix + "invalid start_year. #{@start_year}") unless valid_year_type?
+
+ unless valid_new_year_date_type?
+ failed.push(prefix + "invalid new_year_date. #{@new_year_date}")
+ end
+
failed
end
# :reek:NilCheck
@@ -315,19 +333,29 @@
def valid_name_type?
!(@name.nil? || !@name.is_a?(String))
end
#
- # 日付文字列を検証する
+ # 開始日文字列を検証する
#
# @return [True] 正しい
# @return [False] 正しくない
#
- def valid_date_type?
+ def valid_start_date_type?
Western::Calendar.valid_date_string(str: @start_date)
end
+ #
+ # 元旦文字列を検証する
+ #
+ # @return [True] 正しい
+ # @return [False] 正しくない
+ #
+ def valid_new_year_date_type?
+ Western::Calendar.valid_date_string(str: @new_year_date)
+ end
+
# :reek:NilCheck
#
# 元号年を検証する
#
@@ -347,12 +375,14 @@
#
# @return [Gengou] 元号情報
#
def create
start_date = Western::Calendar.parse(str: @start_date)
+ new_year_date = Western::Calendar.parse(str: @new_year_date)
start_year = @start_year.nil? ? 1 : @start_year
- Gengou.new(name: @name, start_date: start_date, year: start_year)
+ Gengou.new(name: @name, start_date: start_date, new_year_date: new_year_date,
+ year: start_year)
end
end
#
# SetParser 元号セット情報の検証/展開