Class: Cucumber::Ast::Step
Overview
:nodoc:
Constant Summary collapse
- INDENT =
2
Instance Attribute Summary collapse
-
#exception ⇒ Object
Returns the value of attribute exception.
-
#feature_element ⇒ Object
Returns the value of attribute feature_element.
-
#gherkin_statement(statement = nil) ⇒ Object
readonly
Returns the value of attribute gherkin_statement.
-
#keyword ⇒ Object
readonly
Returns the value of attribute keyword.
-
#line ⇒ Object
readonly
Returns the value of attribute line.
-
#multiline_arg ⇒ Object
Returns the value of attribute multiline_arg.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
writeonly
Sets the attribute options.
-
#step_collection ⇒ Object
writeonly
Sets the attribute step_collection.
Instance Method Summary collapse
- #accept(visitor) ⇒ Object
- #background? ⇒ Boolean
- #backtrace_line ⇒ Object
- #dom_id ⇒ Object
- #file_colon_line ⇒ Object
- #first_match(visitor) ⇒ Object
-
#initialize(line, keyword, name, multiline_arg = nil) ⇒ Step
constructor
A new instance of Step.
- #language ⇒ Object
- #source_indent ⇒ Object
- #status ⇒ Object
- #step_invocation ⇒ Object
- #step_invocation_from_cells(cells) ⇒ Object
- #text_length(name = @name) ⇒ Object
- #to_sexp ⇒ Object
- #visit_step_result(visitor, step_match, multiline_arg, status, exception, background) ⇒ Object
Constructor Details
#initialize(line, keyword, name, multiline_arg = nil) ⇒ Step
Returns a new instance of Step.
13 14 15 |
# File 'lib/cucumber/ast/step.rb', line 13 def initialize(line, keyword, name, multiline_arg=nil) @line, @keyword, @name, @multiline_arg = line, keyword, name, multiline_arg end |
Instance Attribute Details
#exception ⇒ Object
Returns the value of attribute exception.
9 10 11 |
# File 'lib/cucumber/ast/step.rb', line 9 def exception @exception end |
#feature_element ⇒ Object
Returns the value of attribute feature_element.
9 10 11 |
# File 'lib/cucumber/ast/step.rb', line 9 def feature_element @feature_element end |
#gherkin_statement(statement = nil) ⇒ Object (readonly)
Returns the value of attribute gherkin_statement.
17 18 19 |
# File 'lib/cucumber/ast/step.rb', line 17 def gherkin_statement @gherkin_statement end |
#keyword ⇒ Object (readonly)
Returns the value of attribute keyword.
7 8 9 |
# File 'lib/cucumber/ast/step.rb', line 7 def keyword @keyword end |
#line ⇒ Object (readonly)
Returns the value of attribute line.
7 8 9 |
# File 'lib/cucumber/ast/step.rb', line 7 def line @line end |
#multiline_arg ⇒ Object
Returns the value of attribute multiline_arg.
9 10 11 |
# File 'lib/cucumber/ast/step.rb', line 9 def multiline_arg @multiline_arg end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
7 8 9 |
# File 'lib/cucumber/ast/step.rb', line 7 def name @name end |
#options=(value) ⇒ Object (writeonly)
Sets the attribute options
8 9 10 |
# File 'lib/cucumber/ast/step.rb', line 8 def (value) @options = value end |
#step_collection=(value) ⇒ Object (writeonly)
Sets the attribute step_collection
8 9 10 |
# File 'lib/cucumber/ast/step.rb', line 8 def step_collection=(value) @step_collection = value end |
Instance Method Details
#accept(visitor) ⇒ Object
45 46 47 48 49 50 |
# File 'lib/cucumber/ast/step.rb', line 45 def accept(visitor) return if Cucumber.wants_to_quit # The only time a Step is visited is when it is in a ScenarioOutline. # Otherwise it's always StepInvocation that gets visited instead. visit_step_result(visitor, first_match(visitor), @multiline_arg, :skipped, nil, nil) end |
#background? ⇒ Boolean
22 23 24 |
# File 'lib/cucumber/ast/step.rb', line 22 def background? false end |
#backtrace_line ⇒ Object
80 81 82 |
# File 'lib/cucumber/ast/step.rb', line 80 def backtrace_line @backtrace_line ||= @feature_element.backtrace_line("#{@keyword}#{@name}", @line) unless @feature_element.nil? end |
#dom_id ⇒ Object
92 93 94 |
# File 'lib/cucumber/ast/step.rb', line 92 def dom_id @dom_id ||= file_colon_line.gsub(/\//, '_').gsub(/\./, '_').gsub(/:/, '_') end |
#file_colon_line ⇒ Object
84 85 86 |
# File 'lib/cucumber/ast/step.rb', line 84 def file_colon_line @file_colon_line ||= @feature_element.file_colon_line(@line) unless @feature_element.nil? end |
#first_match(visitor) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/cucumber/ast/step.rb', line 56 def first_match(visitor) # @feature_element is always a ScenarioOutline in this case @feature_element.each_example_row do |cells| argument_hash = cells.to_hash delimited_arguments = delimit_argument_names(argument_hash) name = replace_name_arguments(delimited_arguments) step_match = visitor.step_mother.step_match(name, @name) rescue nil return step_match if step_match end NoStepMatch.new(self, @name) end |
#language ⇒ Object
88 89 90 |
# File 'lib/cucumber/ast/step.rb', line 88 def language @feature_element.language end |
#source_indent ⇒ Object
72 73 74 |
# File 'lib/cucumber/ast/step.rb', line 72 def source_indent @feature_element.source_indent(text_length) end |
#status ⇒ Object
26 27 28 29 |
# File 'lib/cucumber/ast/step.rb', line 26 def status # Step always has status skipped, because Step is always in a ScenarioOutline :skipped end |
#step_invocation ⇒ Object
31 32 33 |
# File 'lib/cucumber/ast/step.rb', line 31 def step_invocation StepInvocation.new(self, @name, @multiline_arg, []) end |
#step_invocation_from_cells(cells) ⇒ Object
35 36 37 38 39 40 41 42 43 |
# File 'lib/cucumber/ast/step.rb', line 35 def step_invocation_from_cells(cells) matched_cells = matched_cells(cells) delimited_arguments = delimit_argument_names(cells.to_hash) name = replace_name_arguments(delimited_arguments) multiline_arg = @multiline_arg.nil? ? nil : @multiline_arg.arguments_replaced(delimited_arguments) StepInvocation.new(self, name, multiline_arg, matched_cells) end |
#text_length(name = @name) ⇒ Object
76 77 78 |
# File 'lib/cucumber/ast/step.rb', line 76 def text_length(name=@name) INDENT + INDENT + @keyword.unpack('U*').length + name.unpack('U*').length end |
#to_sexp ⇒ Object
68 69 70 |
# File 'lib/cucumber/ast/step.rb', line 68 def to_sexp [:step, @line, @keyword, @name, (@multiline_arg.nil? ? nil : @multiline_arg.to_sexp)].compact end |
#visit_step_result(visitor, step_match, multiline_arg, status, exception, background) ⇒ Object
52 53 54 |
# File 'lib/cucumber/ast/step.rb', line 52 def visit_step_result(visitor, step_match, multiline_arg, status, exception, background) visitor.visit_step_result(@keyword, step_match, @multiline_arg, status, exception, source_indent, background) end |