Class: Csvtool::Domain::RowSession::RowRange

Inherits:
Object
  • Object
show all
Defined in:
lib/csvtool/domain/row_session/row_range.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(start_row:, end_row:) ⇒ RowRange

Returns a new instance of RowRange.



28
29
30
31
32
33
34
35
# File 'lib/csvtool/domain/row_session/row_range.rb', line 28

def initialize(start_row:, end_row:)
  raise InvalidStartRowError, "invalid start row" unless start_row.to_i >= 1
  raise InvalidEndRowError, "invalid end row" unless end_row.to_i >= 1
  raise InvalidRowRangeOrderError, "end row before start row" if end_row < start_row

  @start_row = start_row
  @end_row = end_row
end

Instance Attribute Details

#end_rowObject (readonly)

Returns the value of attribute end_row.



11
12
13
# File 'lib/csvtool/domain/row_session/row_range.rb', line 11

def end_row
  @end_row
end

#start_rowObject (readonly)

Returns the value of attribute start_row.



11
12
13
# File 'lib/csvtool/domain/row_session/row_range.rb', line 11

def start_row
  @start_row
end

Class Method Details

.from_inputs(start_row_input:, end_row_input:) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/csvtool/domain/row_session/row_range.rb', line 13

def self.from_inputs(start_row_input:, end_row_input:)
  unless /\A[1-9]\d*\z/.match?(start_row_input.to_s)
    raise InvalidStartRowError, "invalid start row"
  end
  unless /\A[1-9]\d*\z/.match?(end_row_input.to_s)
    raise InvalidEndRowError, "invalid end row"
  end

  start_row = start_row_input.to_i
  end_row = end_row_input.to_i
  raise InvalidRowRangeOrderError, "end row before start row" if end_row < start_row

  new(start_row: start_row, end_row: end_row)
end