Class: Zakuro::Japan::Gengou::Alignment::Line

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

Overview

Line 行

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLine

初期化



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

def initialize
  @list = []
end

Instance Attribute Details

#listArray<LinearGengou> (readonly)

Returns 元号.

Returns:



20
21
22
# File 'lib/zakuro/era/japan/gengou/alignment/line.rb', line 20

def list
  @list
end

Instance Method Details

#get(start_date:, last_date:) ⇒ Array<LinearGengou>

範囲内の元号を取得する

Parameters:

Returns:



73
74
75
76
77
78
79
80
81
82
83
# File 'lib/zakuro/era/japan/gengou/alignment/line.rb', line 73

def get(start_date:, last_date:)
  result = []
  list.each do |gengou|
    next if gengou.out?(start_date: start_date, last_date: last_date)

    # 1日でも範囲内であれば対象とみなす
    result.push(gengou)
  end

  result
end

#get_by_name(name:) ⇒ Array<LinearGengou>

範囲内の元号を取得する(元号名)

Parameters:

  • name (String)

    元号名

Returns:



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

def get_by_name(name:)
  result = []
  list.each do |gengou|
    result.push(gengou) if gengou.name == name
  end

  result
end

#push(list: []) ⇒ Array<LinearGengou>

追加する

下記のパターンが存在し、戻り値は重複分となる

  1. 完全に範囲外(開始日より前)

[@list]:      |-------|-------|
[list]:  |---|
  1. 前半のみ範囲外

[@list]:      |-------|-------|
[list]:  |------|
  1. 範囲内

[@list]: |-------|-------|
[list]:  |------|
  1. 後半のみ範囲外

[@list]: |-------|-------|
[list]:              |------|
  1. 完全に範囲外(開始日より後)

[@list]: |-------|-------|
[list]:                   |----|
  1. 両端が範囲外

[@list]:   |-------|-------|
[list]:  |--------------------|

Parameters:

Returns:



57
58
59
60
61
62
63
# File 'lib/zakuro/era/japan/gengou/alignment/line.rb', line 57

def push(list: [])
  rest = rest(list: list)

  insert(list: list)

  rest
end