Class: Zakuro::Calculation::Gengou::AbstractScroll

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

Overview

AbstractScroll

元号スクロール

Direct Known Subclasses

DatedScroll, NamedScroll

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(range:) ⇒ AbstractScroll

初期化



38
39
40
41
42
43
44
45
46
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 38

def initialize(range:)
  @monthly_start_date = Western::Calendar.new
  @monthly_last_date = Western::Calendar.new
  @range = range
  @first_gengou = []
  @second_gengou = []
  @ignited = false
  @connector = Connector.new
end

Instance Attribute Details

#connectorConnector (readonly)



31
32
33
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 31

def connector
  @connector
end

#first_gengouArray<Counter> (readonly)



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

def first_gengou
  @first_gengou
end

#monthly_last_dateWestern::Calendar (readonly)



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

def monthly_last_date
  @monthly_last_date
end

#monthly_start_dateWestern::Calendar (readonly)



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

def monthly_start_date
  @monthly_start_date
end

#rangeReserve::AbstractRange (readonly)



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

def range
  @range
end

#second_gengouArray<Counter> (readonly)



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

def second_gengou
  @second_gengou
end

Instance Method Details

#advance(month:) ⇒ Object

進める



87
88
89
90
91
92
93
94
95
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 87

def advance(month:)
  @monthly_start_date = monthly_last_date.clone + 1

  @monthly_last_date = monthly_start_date.clone + month.days - 1

  next_year if month.number == 1 && !month.leaped?

  update_current_gengou
end

#ignite(month:) ⇒ True, False

元号開始を試みる



72
73
74
75
76
77
78
79
80
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 72

def ignite(month:)
  return false unless ignitable?(month: month)

  first_monthly_date(month: month)

  update_current_gengou

  true
end

#run(month:) ⇒ Object

進める



53
54
55
56
57
58
59
60
61
62
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 53

def run(month:)
  unless @ignited
    # 開始日の検索を行う
    @ignited = ignite(month: month)
    return
  end

  # 時間を進める
  advance(month: month)
end

#to_gengouBase::Gengou

共通の元号に変換する



102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 102

def to_gengou
  start_date = monthly_start_date.clone
  last_date = monthly_last_date.clone

  # 行を超えた元号切り替え処理
  continue_year

  Publisher.run(
    start_date: start_date, last_date: last_date,
    first_gengou: first_gengou, second_gengou: second_gengou
  )
end

#western_last_yearInteger

終了西暦年を取得する



129
130
131
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 129

def western_last_year
  range.western_last_year
end

#western_start_yearInteger

開始西暦年を取得する



120
121
122
# File 'lib/zakuro/calculation/era/gengou/abstract_scroll.rb', line 120

def western_start_year
  range.western_start_year
end