Sha256: 97660cd4d7d05e572dccd8aa1ded6e16e999d3ccdc38ede31b915c0cf4d194c0

Contents?: true

Size: 1.75 KB

Versions: 16

Compression:

Stored size: 1.75 KB

Contents

# File: macro-step-support.rb

require_relative "exceptions"
require_relative "macro-collection"

module Macros4Cuke # Module used as a namespace

# Mix-in module that should be extending World objects in Cucumber.  
# Synopsis (in env.rb):  
#   
#   require 'macros4cuke'  
#   ...  
#   World(Macros4Cuke::MacroStepSupport) # Extend the world object with this module.
#    
module MacroStepSupport
public

  # Add a new macro.
  # Pre-condition: there is no existing macro with the same key.
  # @param aPhrase [String] The text that is enclosed between the square brackets [...].
  # @param aTemplate [String] The text template that consists of a sequence of sub-steps.
  # @param useTable [boolean] A flag that indicates whether a table should be used to pass actual values.
  def add_macro(aPhrase, aTemplate, useTable)
    MacroCollection::instance.add_macro(aPhrase, aTemplate, useTable)
  end


  # Invoke a macro with given phrase and (optionally) a table of values
  # @param aPhraseInstance [String] an instance of the macro phrase. That is, the text between [...] and with zero or more actual values.
  # @param rawData [Array or nil] An Array with coupples of the form: [macro argument name, a value].
  # Multiple rows with same argument name are acceptable.  
  def invoke_macro(aPhraseInstance, rawData = nil)
    # Generate a text rendition of the step to be executed.
    rendered_steps = MacroCollection::instance.render_steps(aPhraseInstance, rawData)
    
    # Let Cucumber execute the sub-steps
    steps(rendered_steps)
  end


  # Clear (remove) all the macro-step definitions.
  # After this, we are in the same situation when no macro-step was ever defined.
  def clear_macros()
    MacroCollection::instance.clear()
  end

end # module

end # module


# End of file

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
macros4cuke-0.3.12 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.3.11 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.3.10 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.3.09 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.3.08 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.3.07 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.3.06 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.3.03 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.3.02 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.3.01 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.3.00 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.2.22 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.2.21 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.2.20 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.2.19 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.2.18 lib/macros4cuke/macro-step-support.rb