Class: Zakuro::Japan::Type::Validation::GengouSet

Inherits:
Object
  • Object
show all
Defined in:
lib/zakuro/era/japan/type/validation/gengou_set.rb

Overview

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash:) ⇒ GengouSet

初期化

Parameters:

  • hash (Hash<String, Object>)

    元号セット情報



34
35
36
37
38
39
40
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 34

def initialize(hash:)
  @id = hash['id']
  @name = hash['name']
  @last_year = hash['last_year']
  @last_date = hash['last_date']
  @list = hash['list']
end

Instance Attribute Details

#idString (readonly)

Returns 元号セットID.

Returns:

  • (String)

    元号セットID



19
20
21
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 19

def id
  @id
end

#last_dateHash<String, String> (readonly)

Returns 終了日.

Returns:

  • (Hash<String, String>)

    終了日



25
26
27
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 25

def last_date
  @last_date
end

#last_yearHash<String, String> (readonly)

Returns 終了年.

Returns:

  • (Hash<String, String>)

    終了年



23
24
25
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 23

def last_year
  @last_year
end

#listArray<Hash<String, String>> (readonly)

Returns 元号情報.

Returns:

  • (Array<Hash<String, String>>)

    元号情報



27
28
29
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 27

def list
  @list
end

#nameString (readonly)

Returns 元号セット名.

Returns:

  • (String)

    元号セット名



21
22
23
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 21

def name
  @name
end

Instance Method Details

#id?True, False

IDを検証する

Returns:

  • (True)

    正しい

  • (False)

    正しくない



67
68
69
70
71
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 67

def id?
  return false unless id

  id.is_a?(Integer)
end

#list?True, False

元号情報を検証する

Returns:

  • (True)

    正しい

  • (False)

    正しくない



109
110
111
112
113
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 109

def list?
  return false unless list

  list.is_a?(Array)
end

#name?True, False

元号セット名を検証する

Returns:

  • (True)

    正しい

  • (False)

    正しくない



79
80
81
82
83
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 79

def name?
  return false unless @name

  name.is_a?(String)
end

#validateArray<String>

検証する

Returns:

  • (Array<String>)

    不正メッセージ



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 47

def validate
  failed = []
  failed.push("invalid id. #{id}") unless id?

  failed.push("invalid name. #{name}") unless name?

  failed |= validate_last_year

  failed |= validate_last_date

  failed |= validate_list
  failed
end

#validate_last_dateArray<String>

終了日を検証する

Returns:

  • (Array<String>)

    不正メッセージ



99
100
101
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 99

def validate_last_date
  SwitchDate.new(hash: last_date).validate
end

#validate_last_yearArray<String>

終了年を検証する

Returns:

  • (Array<String>)

    不正メッセージ



90
91
92
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 90

def validate_last_year
  Both::Year.new(hash: last_year).validate
end

#validate_listArray<String>

元号情報を検証する

Returns:

  • (Array<String>)

    不正メッセージ



120
121
122
123
124
125
126
127
128
# File 'lib/zakuro/era/japan/type/validation/gengou_set.rb', line 120

def validate_list
  return ["invalid list. #{list.class}"] unless list?

  failed = []
  list.each_with_index do |li, index|
    failed |= Gengou.new(hash: li, index: index).validate
  end
  failed
end