Class: Zakuro::Calculation::Base::Gengou

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

Overview

Gengou 元号

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new, first_line: [], second_line: []) ⇒ Gengou

初期化

Parameters:

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

    開始日

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

    終了日

  • first_line (Array<LinearGengou>) (defaults to: [])

    1行目元号

  • second_line (Array<LinearGengou>) (defaults to: [])

    2行目元号



32
33
34
35
36
37
38
# File 'lib/zakuro/calculation/base/gengou.rb', line 32

def initialize(start_date: Western::Calendar.new, last_date: Western::Calendar.new,
               first_line: [], second_line: [])
  @start_date = start_date
  @last_date = last_date
  @first_line = first_line
  @second_line = second_line
end

Instance Attribute Details

#first_lineArray<LinearGengou> (readonly)

Returns 1行目元号.

Returns:



20
21
22
# File 'lib/zakuro/calculation/base/gengou.rb', line 20

def first_line
  @first_line
end

#last_dateWestern::Calendar (readonly)

Returns 終了日.

Returns:



18
19
20
# File 'lib/zakuro/calculation/base/gengou.rb', line 18

def last_date
  @last_date
end

#second_lineArray<LinearGengou> (readonly)

Returns 2行目元号.

Returns:



22
23
24
# File 'lib/zakuro/calculation/base/gengou.rb', line 22

def second_line
  @second_line
end

#start_dateWestern::Calendar (readonly)

Returns 開始日.

Returns:



16
17
18
# File 'lib/zakuro/calculation/base/gengou.rb', line 16

def start_date
  @start_date
end

Instance Method Details

#invalid?True, False

不正か

Returns:

  • (True)

    不正

  • (False)

    不正なし



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

def invalid?
  first_line.empty? && second_line.empty?
end

#match_by_name(name:) ⇒ LinearGengou

元号を取得する

Parameters:

  • name (String)

    元号名

Returns:



77
78
79
80
81
82
# File 'lib/zakuro/calculation/base/gengou.rb', line 77

def match_by_name(name:)
  result = match_first_line_by_name(name: name)
  return result unless result.invalid?

  match_second_line_by_name(name: name)
end

#match_first_line(date: Western::Calendar) ⇒ LinearGengou

1行目元号を取得する

Parameters:

Returns:



47
48
49
50
51
52
53
# File 'lib/zakuro/calculation/base/gengou.rb', line 47

def match_first_line(date: Western::Calendar)
  first_line.each do |line|
    return line.clone if line.include?(date: date)
  end

  LinearGengou.new
end

#match_first_line_by_name(name:) ⇒ LinearGengou

1行目元号を取得する

Parameters:

  • name (String)

    元号名

Returns:



91
92
93
94
95
96
97
# File 'lib/zakuro/calculation/base/gengou.rb', line 91

def match_first_line_by_name(name:)
  first_line.each do |line|
    return line.clone if line.name == name
  end

  LinearGengou.new
end

#match_second_line(date: Western::Calendar) ⇒ LinearGengou

2行目元号を取得する

Parameters:

Returns:



62
63
64
65
66
67
68
# File 'lib/zakuro/calculation/base/gengou.rb', line 62

def match_second_line(date: Western::Calendar)
  second_line.each do |line|
    return line.clone if line.include?(date: date)
  end

  LinearGengou.new
end

#match_second_line_by_name(name:) ⇒ LinearGengou

2行目元号を取得する

Parameters:

  • name (String)

    元号名

Returns:



106
107
108
109
110
111
112
# File 'lib/zakuro/calculation/base/gengou.rb', line 106

def match_second_line_by_name(name:)
  second_line.each do |line|
    return line.clone if line.name == name
  end

  LinearGengou.new
end