Sha256: 9233c6003bb6a961786943435c355f51ccf5285ba9d8ed5e762ffc6d59998c47
Contents?: true
Size: 994 Bytes
Versions: 3
Compression:
Stored size: 994 Bytes
Contents
# frozen_string_literal: true module Basic101 class InputReader 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 def read_string end_of_input_error if @columns.empty? value = @columns.shift if value == EOS '' else value || '' end end def read_numeric column = next_column unless column =~ /^[+-]?\d+/ raise BadInputFormatError, "Not numeric: #{column.inspect}" end column.to_f end private def next_column raise_error_if_eos @columns.shift || '' end def raise_error_if_eos if @columns.first == EOS end_of_input_error end end private EOS = "EOS" def end_of_input_error raise TooFewInputItemsError, "Too few items" end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
basic101-1.0.2 | lib/basic101/input_reader.rb |
basic101-1.0.1 | lib/basic101/input_reader.rb |
basic101-1.0.0 | lib/basic101/input_reader.rb |