Class: Trainworks::FileParser

Inherits:
Object
  • Object
show all
Defined in:
lib/trainworks/file_parser.rb,
lib/trainworks/file_parser/invalid_railroad_input_format.rb

Overview

FileParser is responsible for parsing the input file

Examples:

AB5, cd99, LetterLetterPositiveNumbers

Defined Under Namespace

Classes: InvalidRailroadInputFormat

Constant Summary collapse

SINGLE_TUPLE_REGEX =

captures, for example, AB99

/(?<from>[a-zA-Z])(?<to>[a-zA-Z])(?<distance>\d+)/

Instance Method Summary collapse

Constructor Details

#initialize(file_path) ⇒ FileParser

Converts the object into textual markup given a specific format.

Parameters:

  • file_path (String)

    the path for input file



13
14
15
# File 'lib/trainworks/file_parser.rb', line 13

def initialize(file_path)
  @raw_content = File.read(file_path)
end

Instance Method Details

#parseArray<Route>

Returns array of Routes.

Returns:

Raises:



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/trainworks/file_parser.rb', line 19

def parse
  clean_string(@raw_content).split(',').map do |route_string|
    matched_route_string = route_string.match(SINGLE_TUPLE_REGEX)
    raise InvalidRailroadInputFormat, route_string if matched_route_string.nil?

    Route.new(
      from:     matched_route_string[:from],
      to:       matched_route_string[:to],
      distance: matched_route_string[:distance]
    )
  end
end