This class conforms to the Gherkin event API and builds the “legacy” AST. It will be replaced later when we have a new “clean” AST.
# File lib/cucumber/parser/gherkin_builder.rb, line 14 def initialize(path = 'UNKNOWN-FILE') @path = path end
# File lib/cucumber/parser/gherkin_builder.rb, line 35 def background(node) builder = BackgroundBuilder.new(file, node) @feature_builder.background_builder = builder @current = builder end
# File lib/cucumber/parser/gherkin_builder.rb, line 70 def eof end
# File lib/cucumber/parser/gherkin_builder.rb, line 53 def examples(examples) examples_fields = [ Ast::Location.new(file, examples.line), Ast::Comment.new(examples.comments.map{|comment| comment.value}.join("\n")), examples.keyword, examples.name, examples.description, matrix(examples.rows) ] @current.add_examples examples_fields, examples end
# File lib/cucumber/parser/gherkin_builder.rb, line 31 def feature(node) @feature_builder = FeatureBuilder.new(file, node) end
# File lib/cucumber/parser/gherkin_builder.rb, line 23 def language=(language) @language = language end
# File lib/cucumber/parser/gherkin_builder.rb, line 18 def result return nil unless @feature_builder @feature_builder.result(language) end
# File lib/cucumber/parser/gherkin_builder.rb, line 41 def scenario(node) builder = ScenarioBuilder.new(file, node) @feature_builder.add_child builder @current = builder end
# File lib/cucumber/parser/gherkin_builder.rb, line 47 def scenario_outline(node) builder = ScenarioOutlineBuilder.new(file, node) @feature_builder.add_child builder @current = builder end
# File lib/cucumber/parser/gherkin_builder.rb, line 65 def step(node) builder = StepBuilder.new(file, node) @current.add_child builder end
# File lib/cucumber/parser/gherkin_builder.rb, line 73 def syntax_error(state, event, legal_events, line) # raise "SYNTAX ERROR" end
# File lib/cucumber/parser/gherkin_builder.rb, line 27 def uri(uri) @path = uri end
# File lib/cucumber/parser/gherkin_builder.rb, line 99 def file if Cucumber::WINDOWS && !ENV['CUCUMBER_FORWARD_SLASH_PATHS'] @path.gsub(/\//, '\') else @path end end
# File lib/cucumber/parser/gherkin_builder.rb, line 95 def language @language || raise("Language has not been set") end
# File lib/cucumber/parser/gherkin_builder.rb, line 84 def matrix(gherkin_table) gherkin_table.map do |gherkin_row| row = gherkin_row.cells class << row attr_accessor :line end row.line = gherkin_row.line row end end