Sha256: 821bc2df18433000edf883cc97f0d4f2ba2b2912e7a0d8e3f2a2607b5cfcaf42

Contents?: true

Size: 1.81 KB

Versions: 3

Compression:

Stored size: 1.81 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'  
#   ...  
#   # Extend the world object with this module.
#   World(Macros4Cuke::MacroStepSupport) 
#    
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.
    collection = MacroCollection.instance
    rendered_steps = collection.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

3 entries across 3 versions & 1 rubygems

Version Path
macros4cuke-0.3.42 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.3.41 lib/macros4cuke/macro-step-support.rb
macros4cuke-0.3.40 lib/macros4cuke/macro-step-support.rb