Class: Silicon::Routing::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/silicon/routing/parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(file_reader, routes_builder, syntax_parser, syntax_error_interpreter) ⇒ Parser

Returns a new instance of Parser.



4
5
6
7
8
9
10
# File 'lib/silicon/routing/parser.rb', line 4

def initialize(file_reader, routes_builder,
               syntax_parser, syntax_error_interpreter)
  @file_reader = file_reader
  @routes_builder = routes_builder
  @syntax_parser = syntax_parser
  @syntax_error_interpreter = syntax_error_interpreter
end

Instance Method Details

#parseObject



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/silicon/routing/parser.rb', line 12

def parse
  content = @file_reader.read
  tree = @syntax_parser.parse(content)

  if tree.nil?
    error_message = @syntax_error_interpreter.interpret
    raise Silicon::SyntaxError, error_message
  end

  @routes_builder.build(tree.parse)
end