Parent

Included Modules

Class Index [+]

Quicksearch

Cucumber::Parser::GherkinBuilder

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.

Public Instance Methods

ast() click to toggle source
    # File lib/cucumber/parser/gherkin_builder.rb, line 12
12:       def ast
13:         @feature || @multiline_arg
14:       end
background(statement) click to toggle source
    # File lib/cucumber/parser/gherkin_builder.rb, line 27
27:       def background(statement)
28:         @background = Ast::Background.new(
29:           Ast::Comment.new(statement.comments.map{|comment| comment.value}.join("\n")), 
30:           statement.line, 
31:           statement.keyword, 
32:           legacy_name_for(statement.name, statement.description), 
33:           steps=[]
34:         )
35:         @feature.background = @background
36:         @background.feature = @feature
37:         @step_container = @background
38:       end
eof() click to toggle source
    # File lib/cucumber/parser/gherkin_builder.rb, line 97
97:       def eof
98:       end
examples(statement, examples_rows) click to toggle source
    # File lib/cucumber/parser/gherkin_builder.rb, line 74
74:       def examples(statement, examples_rows)
75:         examples_fields = [
76:           Ast::Comment.new(statement.comments.map{|comment| comment.value}.join("\n")), 
77:           statement.line, 
78:           statement.keyword, 
79:           legacy_name_for(statement.name, statement.description), 
80:           matrix(examples_rows)
81:         ]
82:         @step_container.add_examples(examples_fields)
83:       end
feature(statement, uri) click to toggle source
    # File lib/cucumber/parser/gherkin_builder.rb, line 16
16:       def feature(statement, uri)
17:         @feature = Ast::Feature.new(
18:           nil, 
19:           Ast::Comment.new(statement.comments.map{|comment| comment.value}.join("\n")), 
20:           Ast::Tags.new(nil, statement.tags.map{|tag| tag.name}),
21:           statement.keyword,
22:           legacy_name_for(statement.name, statement.description),
23:           []
24:         )
25:       end
scenario(statement) click to toggle source
    # File lib/cucumber/parser/gherkin_builder.rb, line 40
40:       def scenario(statement)
41:         scenario = Ast::Scenario.new(
42:           @background, 
43:           Ast::Comment.new(statement.comments.map{|comment| comment.value}.join("\n")), 
44:           Ast::Tags.new(nil, statement.tags.map{|tag| tag.name}), 
45:           statement.line, 
46:           statement.keyword, 
47:           legacy_name_for(statement.name, statement.description), 
48:           steps=[]
49:         )
50:         @feature.add_feature_element(scenario)
51:         @background.feature_elements << scenario if @background
52:         @step_container = scenario
53:       end
scenario_outline(statement) click to toggle source
    # File lib/cucumber/parser/gherkin_builder.rb, line 55
55:       def scenario_outline(statement)
56:         scenario_outline = Ast::ScenarioOutline.new(
57:           @background, 
58:           Ast::Comment.new(statement.comments.map{|comment| comment.value}.join("\n")), 
59:           Ast::Tags.new(nil, statement.tags.map{|tag| tag.name}), 
60:           statement.line, 
61:           statement.keyword, 
62:           legacy_name_for(statement.name, statement.description), 
63:           steps=[],
64:           example_sections=[]
65:         )
66:         @feature.add_feature_element(scenario_outline)
67:         if @background
68:           @background = @background.dup
69:           @background.feature_elements << scenario_outline
70:         end
71:         @step_container = scenario_outline
72:       end
step(statement, multiline_arg, result) click to toggle source
    # File lib/cucumber/parser/gherkin_builder.rb, line 85
85:       def step(statement, multiline_arg, result)
86:         @table_owner = Ast::Step.new(statement.line, statement.keyword, statement.name)
87:         multiline_arg = rubify(multiline_arg)
88:         case(multiline_arg)
89:         when Gherkin::Formatter::Model::PyString
90:           @table_owner.multiline_arg = Ast::PyString.new(multiline_arg.value)
91:         when Array
92:           @table_owner.multiline_arg = Ast::Table.new(matrix(multiline_arg))
93:         end
94:         @step_container.add_step(@table_owner)
95:       end
syntax_error(state, event, legal_events, line) click to toggle source
     # File lib/cucumber/parser/gherkin_builder.rb, line 100
100:       def syntax_error(state, event, legal_events, line)
101:         # raise "SYNTAX ERROR"
102:       end

Private Instance Methods

legacy_name_for(name, description) click to toggle source
     # File lib/cucumber/parser/gherkin_builder.rb, line 106
106:       def legacy_name_for(name, description)
107:         s = name
108:         s += "\n#{description}" if description != ""
109:         s
110:       end
matrix(gherkin_table) click to toggle source
     # File lib/cucumber/parser/gherkin_builder.rb, line 112
112:       def matrix(gherkin_table)
113:         gherkin_table.map do |gherkin_row|
114:           row = gherkin_row.cells
115:           class << row
116:             attr_accessor :line
117:           end
118:           row.line = gherkin_row.line
119:           row
120:         end
121:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.