# File lib/cucumber/runtime/support_code.rb, line 32 def initialize(user_interface, configuration={}) @configuration = Configuration.parse(configuration) @runtime_facade = Runtime::ForProgrammingLanguages.new(self, user_interface) @unsupported_programming_languages = [] @programming_languages = [] @language_map = {} end
# File lib/cucumber/runtime/support_code.rb, line 116 def around(scenario, block) @programming_languages.reverse.inject(block) do |blk, programming_language| proc do programming_language.around(scenario) do blk.call(scenario) end end end.call end
# File lib/cucumber/runtime/support_code.rb, line 40 def configure(new_configuration) @configuration = Configuration.parse(new_configuration) end
# File lib/cucumber/runtime/support_code.rb, line 110 def fire_hook(name, *args) @programming_languages.each do |programming_language| programming_language.send(name, *args) end end
# File lib/cucumber/runtime/support_code.rb, line 56 def invoke(step_name, multiline_argument=nil) multiline_argument = Cucumber::Ast::MultilineArgument.from(multiline_argument) # It is very important to leave multiline_argument=nil as a vararg. Cuke4Duke needs it that way. begin step_match(step_name).invoke(multiline_argument) rescue Exception => e e.nested! if Undefined === e raise e end end
Invokes a series of steps steps_text. Example:
invoke(%Q{ Given I have 8 cukes in my belly Then I should not be thirsty })
# File lib/cucumber/runtime/support_code.rb, line 50 def invoke_steps(steps_text, i18n, file_colon_line) file, line = file_colon_line.split(':') parser = Gherkin::Parser::Parser.new(StepInvoker.new(self), true, 'steps') parser.parse(steps_text, file, line.to_i) end
# File lib/cucumber/runtime/support_code.rb, line 80 def load_files!(files) log.debug("Code:\n") files.each do |file| load_file(file) end log.debug("\n") end
# File lib/cucumber/runtime/support_code.rb, line 88 def load_files_from_paths(paths) files = paths.map { |path| Dir["#{path}/**/*"] }.flatten load_files! files end
Loads and registers programming language implementation. Instances are cached, so calling with the same argument twice will return the same instance.
# File lib/cucumber/runtime/support_code.rb, line 71 def load_programming_language(ext) return @language_map[ext] if @language_map[ext] programming_language_class = constantize("Cucumber::#{ext.capitalize}Support::#{ext.capitalize}Language") programming_language = programming_language_class.new(@runtime_facade) @programming_languages << programming_language @language_map[ext] = programming_language programming_language end
# File lib/cucumber/runtime/support_code.rb, line 126 def step_definitions @programming_languages.map do |programming_language| programming_language.step_definitions end.flatten end
Generated with the Darkfish Rdoc Generator 2.