class Basic101::InputReader
Constants
- EOS
Public Class Methods
new(input)
click to toggle source
# File lib/basic101/input_reader.rb, line 7 def initialize(input) line = input.read_line line += ',' unless line.empty? line += EOS @columns = line.parse_csv rescue CSV::MalformedCSVError raise BadInputFormatError, 'Invalid format' end
Public Instance Methods
read_numeric()
click to toggle source
# File lib/basic101/input_reader.rb, line 26 def read_numeric column = next_column unless column =~ /^[+-]?\d+/ raise BadInputFormatError, "Not numeric: #{column.inspect}" end column.to_f end
read_string()
click to toggle source
# File lib/basic101/input_reader.rb, line 16 def read_string end_of_input_error if @columns.empty? value = @columns.shift if value == EOS '' else value || '' end end
Private Instance Methods
end_of_input_error()
click to toggle source
# File lib/basic101/input_reader.rb, line 51 def end_of_input_error raise TooFewInputItemsError, "Too few items" end
next_column()
click to toggle source
# File lib/basic101/input_reader.rb, line 36 def next_column raise_error_if_eos @columns.shift || '' end
raise_error_if_eos()
click to toggle source
# File lib/basic101/input_reader.rb, line 41 def raise_error_if_eos if @columns.first == EOS end_of_input_error end end