lib/zakuro/era/japan/gengou/alignment/aligner.rb in zakuro-0.6.1 vs lib/zakuro/era/japan/gengou/alignment/aligner.rb in zakuro-0.7.0

- old
+ new

@@ -4,101 +4,116 @@ require_relative './line' # :nodoc: module Zakuro - # - # Japan 和暦 - # + # :nodoc: module Japan - # - # Alignment 整列 - # - module Alignment + # :nodoc: + module Gengou # - # Aligner 元号整列 + # Alignment 整列 # - class Aligner - # @return [Integer] 1行目元号 - FIRST_LINE = 0 + module Alignment + # + # Aligner 元号整列 + # + class Aligner + # @return [Integer] 1行目元号 + FIRST_LINE = 0 - # @return [Integer] 2行目元号 - SECOND_LINE = 1 + # @return [Integer] 2行目元号 + SECOND_LINE = 1 - # @return [Array<Integer>] 元号リスト - LINE_INDEXES = [FIRST_LINE, SECOND_LINE].freeze + # @return [Array<Integer>] 元号リスト + LINE_INDEXES = [FIRST_LINE, SECOND_LINE].freeze - # @return [Integer] 行数 - LINE_SIZE = LINE_INDEXES.size + # @return [Integer] 行数 + LINE_SIZE = LINE_INDEXES.size - # @return [Array<Line>] 行元号 - attr_reader :lines + # @return [Array<Line>] 行元号 + attr_reader :lines - # - # 初期化 - # - # @param [Array<Set>] resources 元号解析結果 - # - def initialize(resources: []) - @lines = [] - (1..LINE_SIZE).each do |_index| - @lines.push(Line.new) + # + # 初期化 + # + # @param [Array<Set>] resources 元号解析結果 + # + def initialize(resources: []) + @lines = [] + (1..LINE_SIZE).each do |_index| + @lines.push(Line.new) + end + + save(resources: resources) end - save(resources: resources) - end + # + # 行元号に追加する + # + # @param [Set] set 元号セット + # + def push(set:) + list = set.list + list.each do |gengou| + push_gengou(gengou: gengou) + end + end - # - # 行元号に追加する - # - # @param [Set] set 元号セット - # - def push(set:) - list = set.list - list.each do |gengou| - push_gengou(gengou: gengou) + # + # 指定した範囲内の元号を取得する + # + # @param [Integer] line 行 + # @param [Western::Calendar] start_date 開始日 + # @param [Western::Calendar] last_date 終了日 + # + # @return [Array<LinearGengou>] 元号 + # + def get(line:, start_date:, last_date:) + raise ArgumentError.new, 'invalid line number' unless LINE_INDEXES.include?(line) + + @lines[line].get(start_date: start_date, last_date: last_date) end - end - # - # 指定した範囲内の元号を取得する - # - # @param [Integer] line 行 - # @param [Western::Calendar] start_date 開始日 - # @param [Western::Calendar] last_date 終了日 - # - # @return [Array<LinearGengou>] 元号 - # - def get(line:, start_date:, last_date:) - raise ArgumentError.new, 'invalid line number' unless LINE_INDEXES.include?(line) + # + # 指定した範囲内の元号を取得する(元号名) + # + # @param [Integer] line 行 + # @param [String] name 元号名 + # + # @return [Array<LinearGengou>] 元号 + # + def get_by_name(line:, name:) + raise ArgumentError.new, 'invalid line number' unless LINE_INDEXES.include?(line) - @lines[line].get(start_date: start_date, last_date: last_date) - end + @lines[line].get_by_name(name: name) + end - private + private - # - # 保存する - # - # @param [Array<Set>] resources 元号解析結果 - # - def save(resources: []) - resources.each do |set| - push(set: set) + # + # 保存する + # + # @param [Array<Set>] resources 元号解析結果 + # + def save(resources: []) + resources.each do |set| + push(set: set) + end end - end - # - # 元号を追加する - # - # @param [Gengou] gengou 元号 - # - def push_gengou(gengou:) - rest = [ - LinearGengou.new(gengou: gengou) - ] - @lines.each do |line| - rest = line.push(list: rest) + # + # 元号を追加する + # + # @param [Gengou] gengou 元号 + # + def push_gengou(gengou:) + rest = [ + LinearGengou.new(gengou: gengou) + ] + @lines.each do |line| + rest = line.push(list: rest) + end end end end end end