class Cucumber::Core::Gherkin::Parser
Attributes
event_bus[R]
gherkin_query[R]
receiver[R]
Public Class Methods
new(receiver, event_bus, gherkin_query)
click to toggle source
# File lib/cucumber/core/gherkin/parser.rb, line 14 def initialize(receiver, event_bus, gherkin_query) @receiver = receiver @event_bus = event_bus @gherkin_query = gherkin_query end
Public Instance Methods
document(document)
click to toggle source
# File lib/cucumber/core/gherkin/parser.rb, line 20 def document(document) source_messages(document).each do |message| process(message, document) end end
done()
click to toggle source
# File lib/cucumber/core/gherkin/parser.rb, line 35 def done receiver.done self end
gherkin_options(document)
click to toggle source
# File lib/cucumber/core/gherkin/parser.rb, line 26 def gherkin_options(document) { default_dialect: document.language, include_source: false, include_gherkin_document: true, include_pickles: true } end
Private Instance Methods
generate_envelope(message)
click to toggle source
# File lib/cucumber/core/gherkin/parser.rb, line 58 def generate_envelope(message) event_bus.envelope(message) end
process(message, document)
click to toggle source
# File lib/cucumber/core/gherkin/parser.rb, line 46 def process(message, document) generate_envelope(message) update_gherkin_query(message) case type?(message) when :gherkin_document; then event_bus.gherkin_source_parsed(message.gherkin_document) when :pickle; then receiver.pickle(message.pickle) when :parse_error; then raise ParseError.new("#{document.uri}: #{message.parse_error.message}") else raise "Unknown message: #{message.to_hash}" end end
source_messages(document)
click to toggle source
# File lib/cucumber/core/gherkin/parser.rb, line 42 def source_messages(document) ::Gherkin.from_source(document.uri, document.body, gherkin_options(document)) end
type?(message)
click to toggle source
# File lib/cucumber/core/gherkin/parser.rb, line 66 def type?(message) if !message.gherkin_document.nil? :gherkin_document elsif !message.pickle.nil? :pickle elsif message.parse_error :parse_error else :unknown end end
update_gherkin_query(message)
click to toggle source
# File lib/cucumber/core/gherkin/parser.rb, line 62 def update_gherkin_query(message) gherkin_query.update(message) end