Class: Cucumber::StepMatch
Overview
:nodoc:
Instance Attribute Summary collapse
-
#step_definition ⇒ Object
readonly
Returns the value of attribute step_definition.
Instance Method Summary collapse
- #args ⇒ Object
- #backtrace_line ⇒ Object
- #file_colon_line ⇒ Object
-
#format_args(format = lambda{|a| a}, &proc) ⇒ Object
Formats the matched arguments of the associated Step.
-
#initialize(step_definition, step_name, formatted_step_name, step_arguments) ⇒ StepMatch
constructor
A new instance of StepMatch.
-
#inspect ⇒ Object
:nodoc:.
- #invoke(multiline_arg) ⇒ Object
- #name ⇒ Object
- #replace_arguments(string, step_arguments, format, &proc) ⇒ Object
- #text_length ⇒ Object
Constructor Details
#initialize(step_definition, step_name, formatted_step_name, step_arguments) ⇒ StepMatch
Returns a new instance of StepMatch.
5 6 7 |
# File 'lib/cucumber/step_match.rb', line 5 def initialize(step_definition, step_name, formatted_step_name, step_arguments) @step_definition, @step_name, @formatted_step_name, @step_arguments = step_definition, step_name, formatted_step_name, step_arguments end |
Instance Attribute Details
#step_definition ⇒ Object (readonly)
Returns the value of attribute step_definition.
3 4 5 |
# File 'lib/cucumber/step_match.rb', line 3 def step_definition @step_definition end |
Instance Method Details
#args ⇒ Object
9 10 11 |
# File 'lib/cucumber/step_match.rb', line 9 def args @step_arguments.map{|g| g.val} end |
#backtrace_line ⇒ Object
46 47 48 |
# File 'lib/cucumber/step_match.rb', line 46 def backtrace_line @step_definition.backtrace_line end |
#file_colon_line ⇒ Object
42 43 44 |
# File 'lib/cucumber/step_match.rb', line 42 def file_colon_line @step_definition.file_colon_line end |
#format_args(format = lambda{|a| a}, &proc) ⇒ Object
Formats the matched arguments of the associated Step. This method is usually called from visitors, which render output.
The format
can either be a String or a Proc.
If it is a String it should be a format string according to Kernel#sprinf
, for example:
'<span class="param">%s</span></tt>'
If it is a Proc, it should take one argument and return the formatted argument, for example:
lambda { |param| "[#{param}]" }
38 39 40 |
# File 'lib/cucumber/step_match.rb', line 38 def format_args(format = lambda{|a| a}, &proc) @formatted_step_name || replace_arguments(@step_name, @step_arguments, format, &proc) end |
#inspect ⇒ Object
:nodoc:
73 74 75 |
# File 'lib/cucumber/step_match.rb', line 73 def inspect #:nodoc: sprintf("#<%s:0x%x>", self.class, self.object_id) end |
#invoke(multiline_arg) ⇒ Object
17 18 19 20 21 |
# File 'lib/cucumber/step_match.rb', line 17 def invoke(multiline_arg) all_args = args all_args << multiline_arg if multiline_arg @step_definition.invoke(all_args) end |
#name ⇒ Object
13 14 15 |
# File 'lib/cucumber/step_match.rb', line 13 def name @formatted_step_name end |
#replace_arguments(string, step_arguments, format, &proc) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/cucumber/step_match.rb', line 54 def replace_arguments(string, step_arguments, format, &proc) s = string.dup offset = 0 step_arguments.each do |step_argument| next if step_argument.pos.nil? replacement = if block_given? proc.call(step_argument.val) elsif Proc === format format.call(step_argument.val) else format % step_argument.val end s[step_argument.pos + offset, step_argument.val.jlength] = replacement offset += replacement.length - step_argument.val.jlength end s end |
#text_length ⇒ Object
50 51 52 |
# File 'lib/cucumber/step_match.rb', line 50 def text_length @step_definition.text_length end |