Class: Cucumber::Core::Gherkin::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/cucumber/core/gherkin/parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(receiver, event_bus) ⇒ Parser

Returns a new instance of Parser.



17
18
19
20
# File 'lib/cucumber/core/gherkin/parser.rb', line 17

def initialize(receiver, event_bus)
  @receiver = receiver
  @event_bus = event_bus
end

Instance Method Details

#document(document) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/cucumber/core/gherkin/parser.rb', line 22

def document(document)
  parser        = ::Gherkin::Parser.new
  scanner       = ::Gherkin::TokenScanner.new(document.body)
  token_matcher = ::Gherkin::TokenMatcher.new(document.language)
  core_builder  = AstBuilder.new(document.uri)

  begin
    result = parser.parse(scanner, token_matcher)
    event_bus.gherkin_source_parsed(document.uri, result.dup)

    receiver.feature core_builder.feature(result)
  rescue *PARSER_ERRORS => e
    raise Core::Gherkin::ParseError.new("#{document.uri}: #{e.message}")
  end
end

#doneObject



38
39
40
41
# File 'lib/cucumber/core/gherkin/parser.rb', line 38

def done
  receiver.done
  self
end