This class doesn't really generate JSON - instead it populates an Array that can easily be turned into JSON.
# File lib/gherkin/formatter/json_formatter.rb, line 15 def initialize(io) raise "Must be writeable" unless io.respond_to?(:write) @io = io @feature_hashes = [] end
# File lib/gherkin/formatter/json_formatter.rb, line 35 def background(background) feature_elements << background.to_hash @step_index = 0 end
# File lib/gherkin/formatter/json_formatter.rb, line 21 def done @io.write(@feature_hashes.to_json) end
# File lib/gherkin/formatter/json_formatter.rb, line 71 def embedding(mime_type, data) embeddings << {'mime_type' => mime_type, 'data' => encode64s(data)} end
# File lib/gherkin/formatter/json_formatter.rb, line 75 def eof end
# File lib/gherkin/formatter/json_formatter.rb, line 50 def examples(examples) all_examples << examples.to_hash end
# File lib/gherkin/formatter/json_formatter.rb, line 29 def feature(feature) @feature_hash = feature.to_hash @feature_hash['uri'] = @uri @feature_hashes << @feature_hash end
# File lib/gherkin/formatter/json_formatter.rb, line 67 def last_step current_steps[-1] end
# File lib/gherkin/formatter/json_formatter.rb, line 58 def match(match) current_steps[@step_index]['match'] = match.to_hash end
# File lib/gherkin/formatter/json_formatter.rb, line 62 def result(result) current_steps[@step_index]['result'] = result.to_hash @step_index += 1 end
# File lib/gherkin/formatter/json_formatter.rb, line 40 def scenario(scenario) feature_elements << scenario.to_hash @step_index = 0 end
# File lib/gherkin/formatter/json_formatter.rb, line 45 def scenario_outline(scenario_outline) feature_elements << scenario_outline.to_hash @step_index = 0 end
# File lib/gherkin/formatter/json_formatter.rb, line 54 def step(step) current_steps << step.to_hash end
# File lib/gherkin/formatter/json_formatter.rb, line 25 def uri(uri) @uri = uri end