Class: Zakuro::Japan::Gengou::Alignment::LinearGengou

Inherits:
Object
  • Object
show all
Defined in:
lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb

Overview

LinearGengou 直列元号

Constant Summary collapse

INVALID_YEAR =
-1

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new, gengou: Type::Base::Gengou.new) ⇒ LinearGengou

初期化

Parameters:

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

    開始日

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

    終了日

  • gengou (Resource::Gengou) (defaults to: Type::Base::Gengou.new)

    元号



35
36
37
38
39
40
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 35

def initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new,
               gengou: Type::Base::Gengou.new)
  @gengou = gengou
  @start_date = start_date.invalid? ? native_start_date : start_date
  @last_date = last_date.invalid? ? native_last_date : last_date
end

Instance Attribute Details

#gengouGengou (readonly)

Returns 元号.

Returns:



26
27
28
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 26

def gengou
  @gengou
end

#last_dateWestern::Calendar (readonly)

Returns 終了日.

Returns:



24
25
26
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 24

def last_date
  @last_date
end

#start_dateWestern::Calendar (readonly)

Returns 開始日.

Returns:



22
23
24
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 22

def start_date
  @start_date
end

Instance Method Details

#change_last_date?True, False

終了日が設定された終了日と異なるか(行が変更されているか)

Returns:

  • (True)

    異なる

  • (False)

    同一



166
167
168
169
170
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 166

def change_last_date?
  return false if invalid?

  last_date != native_last_date
end

#change_start_date?True, False

開始日が設定された開始日と異なるか(行が変更されているか)

Returns:

  • (True)

    異なる

  • (False)

    同一



154
155
156
157
158
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 154

def change_start_date?
  return false if invalid?

  start_date != native_start_date
end

#changed?True, False

元は1繋ぎであった元号が別の行に存在するか(設定値から変更されているか)?

Returns:

  • (True)

    存在する

  • (False)

    存在しない



140
141
142
143
144
145
146
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 140

def changed?
  return true if change_start_date?

  return true if change_last_date?

  false
end

#covered?(start_date:, last_date:) ⇒ True

完全に範囲を超えているか

Parameters:

Returns:

  • (True)

    完全超過

  • (True)

    完全超過せず



128
129
130
131
132
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 128

def covered?(start_date:, last_date:)
  inner_start_date = @start_date
  inner_last_date = @last_date
  start_date < inner_start_date && inner_last_date < last_date
end

#in?(start_date:, last_date:) ⇒ True, False

完全に範囲内か

Parameters:

Returns:

  • (True)

    範囲内

  • (False)

    範囲外あり



92
93
94
95
96
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 92

def in?(start_date:, last_date:)
  inner_start_date = @start_date
  inner_last_date = @last_date
  inner_start_date <= start_date && last_date <= inner_last_date
end

#include?(date: Western::Calendar.new) ⇒ True, False

範囲内か

Parameters:

Returns:

  • (True)

    範囲内

  • (False)

    範囲外



69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 69

def include?(date: Western::Calendar.new)
  return false if invalid?

  return false if start_date.invalid?

  return false if last_date.invalid?

  return false if date < start_date

  return false if date > last_date

  true
end

#invalid?True, False

不正か

Returns:

  • (True)

    不正

  • (False)

    不正なし



57
58
59
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 57

def invalid?
  gengou.invalid?
end

#nameString

元号名を取得する

Returns:

  • (String)

    元号名



47
48
49
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 47

def name
  gengou.name
end

#native_last_dateWestern::Calendar

設定された元号の終了日を取得する

Returns:



186
187
188
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 186

def native_last_date
  gengou.last_date
end

#native_start_dateWestern::Calendar

設定された元号の開始日を取得する

Returns:



177
178
179
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 177

def native_start_date
  gengou.start_date.western
end

#out?(start_date:, last_date:) ⇒ True, False

完全に範囲外か

Parameters:

Returns:

  • (True)

    範囲外

  • (False)

    範囲内あり



107
108
109
110
111
112
113
114
115
116
117
# File 'lib/zakuro/era/japan/gengou/alignment/linear_gengou.rb', line 107

def out?(start_date:, last_date:)
  inner_start_date = @start_date
  inner_last_date = @last_date
  # 範囲より前
  return true if start_date < inner_start_date && last_date < inner_start_date

  # 範囲より後
  return true if inner_last_date < start_date && inner_last_date < last_date

  false
end