Class: Zakuro::Calculation::Gengou::Counter

Inherits:
Object
  • Object
show all
Defined in:
lib/zakuro/calculation/era/gengou/internal/counter.rb

Overview

Counter 加算元号

Constant Summary collapse

INVALID_YEAR =

Returns 不正値.

Returns:

  • (Integer)

    不正値

-1

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(gengou: Japan::Resource::Gengou.new, start_date: Western::Calendar.new, last_date: Western::Calendar.new, japan_year: INVALID_YEAR) ⇒ Counter

初期化

Parameters:

  • gengou (Japan::Resource::Gengou) (defaults to: Japan::Resource::Gengou.new)

    元号

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

    西暦開始年

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

    西暦終了年

  • japan_year (Integer) (defaults to: INVALID_YEAR)

    和暦年



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 39

def initialize(gengou: Japan::Resource::Gengou.new,
               start_date: Western::Calendar.new, last_date: Western::Calendar.new,
               japan_year: INVALID_YEAR)
  @gengou = gengou
  @japan_year = japan_year
  @japan_year = gengou.start_year.japan if @japan_year == INVALID_YEAR
  @western_year = gengou.start_year.western

  @start_date = start_date.clone
  @last_date = last_date.clone

  select_valid_date
end

Instance Attribute Details

#gengouJapan::Resource::Gengou (readonly)

Returns 元号.

Returns:

  • (Japan::Resource::Gengou)

    元号



21
22
23
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 21

def gengou
  @gengou
end

#japan_yearInteger (readonly)

Returns 元号年.

Returns:

  • (Integer)

    元号年



23
24
25
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 23

def japan_year
  @japan_year
end

#last_dateWestern::Calendar (readonly)

Returns 西暦終了年.

Returns:



29
30
31
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 29

def last_date
  @last_date
end

#start_dateWestern::Calendar (readonly)

Returns 西暦開始年.

Returns:



27
28
29
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 27

def start_date
  @start_date
end

#western_yearInteger (readonly)

Returns 西暦年.

Returns:

  • (Integer)

    西暦年



25
26
27
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 25

def western_year
  @western_year
end

Instance Method Details

#change_last_date?True, False

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

Returns:

  • (True)

    異なる

  • (False)

    同一



163
164
165
166
167
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 163

def change_last_date?
  return false if invalid?

  last_date != native_last_date
end

#change_start_date?True, False

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

Returns:

  • (True)

    異なる

  • (False)

    同一



151
152
153
154
155
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 151

def change_start_date?
  return false if invalid?

  start_date != native_start_date
end

#changed?True, False

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

Returns:

  • (True)

    存在する

  • (False)

    存在しない



137
138
139
140
141
142
143
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 137

def changed?
  return true if change_start_date?

  return true if change_last_date?

  false
end

#include?True, False

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

Parameters:

Returns:

  • (True)

    含まれる

  • (False)

    含まれない



127
128
129
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 127

def include?
  gengou.include?
end

#initialize_copy(obj) ⇒ Object

ディープコピー

Parameters:

  • obj (MultiGengou)

    自身



174
175
176
177
178
179
180
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 174

def initialize_copy(obj)
  @gengou = obj.gengou.clone
  @japan_year = obj.japan_year
  @western_year = obj.western_year
  @start_date = obj.start_date.clone
  @last_date = obj.last_date.clone
end

#invalid?True, False

不正か

Returns:

  • (True)

    不正

  • (False)

    不正なし



115
116
117
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 115

def invalid?
  gengou.invalid? || japan_year == INVALID_YEAR || western_year == INVALID_YEAR
end

#japan_start_dateJapan::Calendar

和暦開始日を取得する

Returns:



58
59
60
61
62
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 58

def japan_start_date
  return Japan::Calendar.new if gengou.invalid?

  gengou.start_date.japan
end

#nameString

元号名を取得する

Returns:

  • (String)

    元号名



103
104
105
106
107
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 103

def name
  return '' unless @gengou

  gengou.name
end

#next_yearMultiGengou

次年にする

Returns:

  • (MultiGengou)

    自身



91
92
93
94
95
96
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 91

def next_year
  @japan_year += 1
  @western_year += 1

  self
end

#western_last_dateWestern::Calendar

西暦終了日を取得する

Returns:



80
81
82
83
84
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 80

def western_last_date
  return Western::Calendar.new if gengou.invalid?

  last_date
end

#western_start_dateWestern::Calendar

西暦開始日を取得する

Returns:



69
70
71
72
73
# File 'lib/zakuro/calculation/era/gengou/internal/counter.rb', line 69

def western_start_date
  return Western::Calendar.new if gengou.invalid?

  start_date
end