A Ruby Step Definition holds a Regexp and a Proc, and is created by calling Given, When or Then in the step_definitions ruby files. See also RbDsl.
Example:
Given /I have (\d+) cucumbers in my belly/ do
# some code here
end
# File lib/cucumber/rb_support/rb_step_definition.rb, line 26
26: def initialize(rb_language, regexp, proc)
27: raise MissingProc if proc.nil?
28: if String === regexp
29: p = Regexp.escape(regexp)
30: p = p.gsub(/\\\$\w+/, '(.*)') # Replace $var with (.*)
31: regexp = Regexp.new("^#{p}$")
32: end
33: @rb_language, @regexp, @proc = rb_language, regexp, proc
34: @rb_language.available_step_definition(regexp_source, file_colon_line)
35: end
# File lib/cucumber/rb_support/rb_step_definition.rb, line 41
41: def ==(step_definition)
42: regexp_source == step_definition.regexp_source
43: end
# File lib/cucumber/rb_support/rb_step_definition.rb, line 45
45: def arguments_from(step_name)
46: args = RegexpArgumentMatcher.arguments_from(@regexp, step_name)
47: @rb_language.invoked_step_definition(regexp_source, file_colon_line) if args
48: args
49: end
# File lib/cucumber/rb_support/rb_step_definition.rb, line 61
61: def backtrace_line
62: @proc.backtrace_line(regexp_source)
63: end
# File lib/cucumber/rb_support/rb_step_definition.rb, line 69
69: def file
70: @file ||= file_colon_line.split(':')[0]
71: end
# File lib/cucumber/rb_support/rb_step_definition.rb, line 65
65: def file_colon_line
66: @proc.file_colon_line
67: end
# File lib/cucumber/rb_support/rb_step_definition.rb, line 51
51: def invoke(args)
52: begin
53: args = @rb_language.execute_transforms(args)
54: @rb_language.current_world.cucumber_instance_exec(true, regexp_source, *args, &@proc)
55: rescue Cucumber::ArityMismatchError => e
56: e.backtrace.unshift(self.backtrace_line)
57: raise e
58: end
59: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.