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 元号セット情報の検証/展開