Class: Cucumber::StepMatch

Inherits:
Object show all
Defined in:
lib/cucumber/step_match.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

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_definitionObject (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

#argsObject



9
10
11
# File 'lib/cucumber/step_match.rb', line 9

def args
  @step_arguments.map{|g| g.val}
end

#backtrace_lineObject



46
47
48
# File 'lib/cucumber/step_match.rb', line 46

def backtrace_line
  @step_definition.backtrace_line
end

#file_colon_lineObject



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

#inspectObject

: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

#nameObject



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_lengthObject



50
51
52
# File 'lib/cucumber/step_match.rb', line 50

def text_length
  @step_definition.text_length
end