Class: Zakuro::Japan::Type::Base::VersionRange

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

Overview

VersionRange 暦範囲情報

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name: '', start_year: Both::Year.new, start_date: Both::Date.new, last_date: Western::Calendar.new, last_year: Both::Year::INVALID, released: false) ⇒ VersionRange

初期化

Parameters:

  • name (String) (defaults to: '')

    暦名

  • start_year (Both::Year) (defaults to: Both::Year.new)

    開始年(和暦/西暦)

  • start_date (Both::Date) (defaults to: Both::Date.new)

    開始日(和暦/西暦)

  • last_date (Integer) (defaults to: Western::Calendar.new)

    終了年

  • last_date (Western::Calendar) (defaults to: Western::Calendar.new)

    終了日

  • released (True, False) (defaults to: false)

    リリース有無



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 45

def initialize(
  name: '', start_year: Both::Year.new,
  start_date: Both::Date.new,
  last_date: Western::Calendar.new, last_year: Both::Year::INVALID,
  released: false
)
  @name = name
  @start_year = start_year
  @start_date = start_date
  @last_year = last_year
  @last_date = last_date
  @released = released
end

Instance Attribute Details

#last_dateWestern::Calendar (readonly)

Returns 終了日.

Returns:



28
29
30
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 28

def last_date
  @last_date
end

#last_yearInteger (readonly)

Returns 終了年.

Returns:

  • (Integer)

    終了年



26
27
28
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 26

def last_year
  @last_year
end

#nameString (readonly)

Returns 暦名.

Returns:

  • (String)

    暦名



20
21
22
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 20

def name
  @name
end

#releasedTrue, False (readonly)

Returns:

  • (True)

    リリース有

  • (False)

    リリース無



31
32
33
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 31

def released
  @released
end

#start_dateBoth::Date (readonly)

Returns 開始日(和暦/西暦).

Returns:



24
25
26
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 24

def start_date
  @start_date
end

#start_yearBoth::Year (readonly)

Returns 開始年(和暦/西暦).

Returns:



22
23
24
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 22

def start_year
  @start_year
end

Class Method Details

.valid_date(date:) ⇒ True, False

日付が不正なしかどうかを確認する

Parameters:

Returns:

  • (True)

    不正なし

  • (False)

    不正



179
180
181
182
183
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 179

def valid_date(date:)
  return false unless date

  date.is_a?(Western::Calendar)
end

.valid_year(year:) ⇒ True, False

年が不正なしかどうかを確認する

Parameters:

  • year (Integer)

Returns:

  • (True)

    不正なし

  • (False)

    不正



165
166
167
168
169
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 165

def valid_year(year:)
  return false unless year

  year.is_a?(Integer)
end

Instance Method Details

#convert_next_start_date_to_last_date(next_start_date: Western::Calendar.new) ⇒ Object

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

Parameters:

  • next_start_date (Western::Calendar) (defaults to: Western::Calendar.new)

    次回開始日

Raises:

  • (ArgumentError)

    引数エラー



115
116
117
118
119
120
121
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 115

def convert_next_start_date_to_last_date(next_start_date: Western::Calendar.new)
  raise ArgumentError, 'invalid value. cannot convert' if next_start_date.invalid?

  @last_date = next_start_date.clone - 1

  nil
end

#convert_next_start_year_to_last_year(next_start_year:) ⇒ Object

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

Parameters:

  • next_start_year (Integer)

    次回開始年



97
98
99
100
101
102
103
104
105
106
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 97

def convert_next_start_year_to_last_year(next_start_year:)
  if start_year.western >= next_start_year
    @last_year = next_start_year
    return
  end

  @last_year = next_start_year - 1

  nil
end

#include?(date:) ⇒ True, False

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

Parameters:

Returns:

  • (True)

    含まれる

  • (False)

    含まれない



131
132
133
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 131

def include?(date:)
  date >= start_date.western && date <= last_date
end

#invalid?True, False

不正か

Returns:

  • (True)

    不正

  • (False)

    不正なし



141
142
143
144
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 141

def invalid?
  start_year.japan == -1 || start_year.invalid? ||
    start_date.invalid? || last_date.invalid?
end

#to_sString

インスタンス値(文字列)を取得する

Returns:

  • (String)

    インスタンス値(文字列)



151
152
153
154
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 151

def to_s
  "name: #{@name}, start_year: #{start_year.format}, " \
  "start_date: #{start_date.format}, last_date: #{last_date.format}"
end

#write_last_date(last_date:) ⇒ Object

終了日を更新する

Parameters:

Raises:

  • (ArgumentError)

    引数エラー



82
83
84
85
86
87
88
89
90
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 82

def write_last_date(last_date:)
  unless self.class.valid_date(date: last_date)
    raise ArgumentError, "invalid date format. [#{last_date}]"
  end

  @last_date = last_date

  nil
end

#write_last_year(last_year:) ⇒ Object

終了年を更新する

Parameters:

  • last_year (Integer)

    終了年

Raises:

  • (ArgumentError)

    引数エラー



67
68
69
70
71
72
73
# File 'lib/zakuro/era/japan/type/base/version_range.rb', line 67

def write_last_year(last_year:)
  unless self.class.valid_year(year: last_year)
    raise ArgumentError, "invalid year format. [#{last_year}]"
  end

  @last_year = last_year
end