Parent

Files

Class/Module Index [+]

Quicksearch

Cucumber::Runtime::SupportCode

Public Class Methods

new(user_interface, configuration={}) click to toggle source
# 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

Public Instance Methods

around(scenario, block) click to toggle source
# 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
configure(new_configuration) click to toggle source
# File lib/cucumber/runtime/support_code.rb, line 40
def configure(new_configuration)
  @configuration = Configuration.parse(new_configuration)
end
fire_hook(name, *args) click to toggle source
# 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
invoke(step_name, multiline_argument=nil) click to toggle source
# 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
invoke_steps(steps_text, i18n, file_colon_line) click to toggle source

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
load_files!(files) click to toggle source
# 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
load_files_from_paths(paths) click to toggle source
# 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
load_programming_language(ext) click to toggle source

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
step_definitions() click to toggle source
# 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
unknown_programming_language?() click to toggle source
# File lib/cucumber/runtime/support_code.rb, line 106
def unknown_programming_language?
  @programming_languages.empty?
end
unmatched_step_definitions() click to toggle source
# File lib/cucumber/runtime/support_code.rb, line 93
def unmatched_step_definitions
  @programming_languages.map do |programming_language| 
    programming_language.unmatched_step_definitions
  end.flatten
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.