class Strut::Parser
Constants
- X_SCENARIO_PREFIX
Public Class Methods
new(namespace)
click to toggle source
# File lib/strut/parser.rb, line 12 def initialize(namespace) @namespace = namespace @command_factory = SlimCommandFactory.new @document_builder = DocumentBuilder.new @interaction_factory = InteractionFactory.new @scenario_builder = ScenarioBuilder.new(@document_builder, @command_factory) @scenario_number = 1 end
Public Instance Methods
append_import_command()
click to toggle source
# File lib/strut/parser.rb, line 28 def append_import_command metadata = CommandMetadata.new(1) import_command = @command_factory.make_import_command(metadata, @namespace) @document_builder.append_command(import_command) end
extract_scenarios(node)
click to toggle source
# File lib/strut/parser.rb, line 34 def extract_scenarios(node) wrapped_node = {"value" => node, "line" => 0} extract_scenarios_for_node("", wrapped_node, []) end
extract_scenarios_for_children(scenario_number, node, path_stack)
click to toggle source
# File lib/strut/parser.rb, line 49 def extract_scenarios_for_children(scenario_number, node, path_stack) return unless node.respond_to?(:each_pair) node.each_pair do |child_node_name, child_node| next_path_stack = path_stack + [child_node_name] extract_scenarios_for_node(child_node_name.to_s, child_node, next_path_stack) end end
extract_scenarios_for_node(node_name, node, path_stack)
click to toggle source
# File lib/strut/parser.rb, line 39 def extract_scenarios_for_node(node_name, node, path_stack) if node_name.start_with?(X_SCENARIO_PREFIX) fixture = node_name.gsub(/^#{X_SCENARIO_PREFIX}/, "") interaction = @interaction_factory.make_interaction(path_stack) @scenario_number = @scenario_builder.extract_scenarios_for_interaction(@scenario_number, interaction, fixture, node) else extract_scenarios_for_children(@scenario_number, node["value"], path_stack) end end
parse(yaml)
click to toggle source
# File lib/strut/parser.rb, line 21 def parse(yaml) parsed_yaml = Psych::parse_yaml(yaml) append_import_command extract_scenarios(parsed_yaml) @document_builder.document end