Parent

Class Index [+]

Quicksearch

Cucumber::Ast::TreeWalker

Walks the AST, executing steps and notifying listeners

Public Class Methods

new(step_mother, listeners = [], options = {}, io = STDOUT) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 8
 8:       def initialize(step_mother, listeners = [], options = {}, io = STDOUT)
 9:         @step_mother, @listeners, @options, @io = step_mother, listeners, options, io
10:       end

Public Instance Methods

announce(announcement) click to toggle source

Print announcement. This method can be called from within StepDefinitions.

     # File lib/cucumber/ast/tree_walker.rb, line 146
146:       def announce(announcement)
147:         broadcast(announcement)
148:       end
embed(file, mime_type) click to toggle source

Embed file of mime_type in the formatter. This method can be called from within StepDefinitions. For most formatters this is a no-op.

     # File lib/cucumber/ast/tree_walker.rb, line 152
152:       def embed(file, mime_type)
153:         broadcast(file, mime_type)
154:       end
visit_background(background) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 55
55:       def visit_background(background)
56:         broadcast(background) do
57:           background.accept(self)
58:         end
59:       end
visit_background_name(keyword, name, file_colon_line, source_indent) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 61
61:       def visit_background_name(keyword, name, file_colon_line, source_indent)
62:         broadcast(keyword, name, file_colon_line, source_indent)
63:       end
visit_comment(comment) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 24
24:       def visit_comment(comment)
25:         broadcast(comment) do
26:           comment.accept(self)
27:         end
28:       end
visit_comment_line(comment_line) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 30
30:       def visit_comment_line(comment_line)
31:         broadcast(comment_line)
32:       end
visit_examples(examples) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 71
71:       def visit_examples(examples)
72:         broadcast(examples) do
73:           examples.accept(self)
74:         end
75:       end
visit_examples_array(examples_array) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 65
65:       def visit_examples_array(examples_array)
66:         broadcast(examples_array) do
67:           examples_array.accept(self)
68:         end
69:       end
visit_examples_name(keyword, name) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 77
77:       def visit_examples_name(keyword, name)
78:         broadcast(keyword, name)
79:       end
visit_feature(feature) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 18
18:       def visit_feature(feature)
19:         broadcast(feature) do
20:           feature.accept(self)
21:         end
22:       end
visit_feature_element(feature_element) click to toggle source

feature_element is either Scenario or ScenarioOutline

    # File lib/cucumber/ast/tree_walker.rb, line 49
49:       def visit_feature_element(feature_element)
50:         broadcast(feature_element) do
51:           feature_element.accept(self)
52:         end
53:       end
visit_feature_name(keyword, name) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 44
44:       def visit_feature_name(keyword, name)
45:         broadcast(keyword, name)
46:       end
visit_features(features) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 12
12:       def visit_features(features)
13:         broadcast(features) do
14:           features.accept(self)
15:         end
16:       end
visit_outline_table(outline_table) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 81
81:       def visit_outline_table(outline_table)
82:         broadcast(outline_table) do
83:           outline_table.accept(self)
84:         end
85:       end
visit_py_string(string) click to toggle source
     # File lib/cucumber/ast/tree_walker.rb, line 125
125:       def visit_py_string(string)
126:         broadcast(string)
127:       end
visit_scenario_name(keyword, name, file_colon_line, source_indent) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 87
87:       def visit_scenario_name(keyword, name, file_colon_line, source_indent)
88:         broadcast(keyword, name, file_colon_line, source_indent)
89:       end
visit_step(step) click to toggle source
     # File lib/cucumber/ast/tree_walker.rb, line 97
 97:       def visit_step(step)
 98:         broadcast(step) do
 99:           step.accept(self)
100:         end
101:       end
visit_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background) click to toggle source
     # File lib/cucumber/ast/tree_walker.rb, line 103
103:       def visit_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background)
104:         broadcast(keyword, step_match, multiline_arg, status, exception, source_indent, background) do
105:           visit_step_name(keyword, step_match, status, source_indent, background)
106:           visit_multiline_arg(multiline_arg) if multiline_arg
107:           visit_exception(exception, status) if exception
108:         end
109:       end
visit_steps(steps) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 91
91:       def visit_steps(steps)
92:         broadcast(steps) do
93:           steps.accept(self)
94:         end
95:       end
visit_table_cell(table_cell) click to toggle source
     # File lib/cucumber/ast/tree_walker.rb, line 135
135:       def visit_table_cell(table_cell)
136:         broadcast(table_cell) do
137:           table_cell.accept(self)
138:         end
139:       end
visit_table_cell_value(value, status) click to toggle source
     # File lib/cucumber/ast/tree_walker.rb, line 141
141:       def visit_table_cell_value(value, status)
142:         broadcast(value, status)
143:       end
visit_table_row(table_row) click to toggle source
     # File lib/cucumber/ast/tree_walker.rb, line 129
129:       def visit_table_row(table_row)
130:         broadcast(table_row) do
131:           table_row.accept(self)
132:         end
133:       end
visit_tag_name(tag_name) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 40
40:       def visit_tag_name(tag_name)
41:         broadcast(tag_name)
42:       end
visit_tags(tags) click to toggle source
    # File lib/cucumber/ast/tree_walker.rb, line 34
34:       def visit_tags(tags)
35:         broadcast(tags) do
36:           tags.accept(self)
37:         end
38:       end

Private Instance Methods

broadcast(*args, &block) click to toggle source
     # File lib/cucumber/ast/tree_walker.rb, line 158
158:       def broadcast(*args, &block)
159:         message = extract_method_name_from(caller)
160:         message.gsub!('visit_', '')
161:         
162:         if block_given?
163:           send_to_all("before_#{message}", *args)
164:           yield if block_given?
165:           send_to_all("after_#{message}", *args)
166:         else
167:           send_to_all(message, *args)
168:         end
169:       end
extract_method_name_from(call_stack) click to toggle source
     # File lib/cucumber/ast/tree_walker.rb, line 216
216:       def extract_method_name_from(call_stack)
217:         call_stack[0].match(/in `(.*)'/).captures[0]
218:       end
legacy_invoke(listener, message, *args) click to toggle source
     # File lib/cucumber/ast/tree_walker.rb, line 203
203:       def legacy_invoke(listener, message, *args)
204:         case message.to_sym
205:         when :feature_name
206:           listener.feature_name("#{args[0]}: #{args[1]}")
207:         when :scenario_name, :examples_name
208:           args_with_colon = args.dup
209:           args_with_colon[0] += ':'
210:           listener.__send__(message, *args_with_colon)
211:         else
212:           listener.__send__(message, *args)
213:         end
214:       end
legacy_listener?(listener) click to toggle source
     # File lib/cucumber/ast/tree_walker.rb, line 184
184:       def legacy_listener?(listener)
185:         listener.respond_to?(:feature_name) && 
186:         (listener.method(:feature_name) rescue false) && 
187:         listener.method(:feature_name).arity == 1
188:       end
send_to_all(message, *args) click to toggle source
     # File lib/cucumber/ast/tree_walker.rb, line 171
171:       def send_to_all(message, *args)
172:         @listeners.each do |listener|
173:           if listener.respond_to?(message)
174:             if legacy_listener?(listener)
175:               warn_legacy(listener)
176:               legacy_invoke(listener, message, *args)
177:             else
178:               listener.__send__(message, *args)
179:             end
180:           end
181:         end
182:       end
warn_legacy(listener) click to toggle source
     # File lib/cucumber/ast/tree_walker.rb, line 190
190:       def warn_legacy(listener)
191:         @warned_listeners ||= []
192:         unless @warned_listeners.index(listener)
193:           warn("#{listener.class} is using a deprecated formatter API. Starting with Cucumber 0.7.0 the signatures\n" + 
194:           "that have changed are:\n" +
195:           "  feature_name(keyword, name)  # Two arguments. The keyword argument will not contain a colon.\n" +
196:           "  scenario_name(keyword, name, file_colon_line, source_indent)  # The keyword argument will not contain a colon.\n" +
197:           "  examples_name(keyword, name)  # The keyword argument will not contain a colon.\n"
198:           )
199:         end
200:         @warned_listeners << listener
201:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.