class Cucumber::Core::Gherkin::Parser

Constants

PARSER_ERRORS

Attributes

event_bus[R]
receiver[R]

Public Class Methods

new(receiver, event_bus) click to toggle source
# File lib/cucumber/core/gherkin/parser.rb, line 16
def initialize(receiver, event_bus)
  @receiver = receiver
  @event_bus = event_bus
end

Public Instance Methods

document(document) click to toggle source
# File lib/cucumber/core/gherkin/parser.rb, line 21
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
done() click to toggle source
# File lib/cucumber/core/gherkin/parser.rb, line 37
def done
  receiver.done
  self
end