class Gherkin::JSONParser

Public Class Methods

new(reporter, formatter) click to toggle source
# File lib/gherkin/json_parser.rb, line 13
def initialize(reporter, formatter)
  @reporter, @formatter = reporter, formatter
end

Public Instance Methods

parse(o, feature_uri='unknown.json', line_offset=0) click to toggle source

Parse a gherkin object o, which can either be a JSON String, or a Hash (from a parsed JSON String).

# File lib/gherkin/json_parser.rb, line 19
def parse(o, feature_uri='unknown.json', line_offset=0)
  o = JSON.parse(o) if String === o
  @formatter.uri(feature_uri)

  Formatter::Model::Feature.new(comments(o), tags(o), keyword(o), name(o), description(o), line(o)).replay(@formatter)
  (o["elements"] || []).each do |feature_element|
    feature_element(feature_element).replay(@formatter)
    (feature_element["steps"] || []).each do |step|
      step(step).replay(@formatter)
      match(step)
      result(step)
      embeddings(step)
    end
    (feature_element["examples"] || []).each do |eo|
      Formatter::Model::Examples.new(comments(eo), tags(eo), keyword(eo), name(eo), description(eo), line(eo), rows(eo['rows'])).replay(@formatter)
    end
  end

  @formatter.eof
end