Sha256: fe9a097890f9839be06bc43763b197f799cb040442b281de12bc9bae2c60dd2e

Contents?: true

Size: 1.43 KB

Versions: 3

Compression:

Stored size: 1.43 KB

Contents

require 'tsort'       # to sort paramset in correct order 

module Sbuilder

  class ParamSets < Hash

    attr_reader :model                       # to resolve paramSets
    
    include TSort                            # sort in correct order

    # ------------------------------------------------------------------
    # constructore
    
    class << self

      def create( model )
        new( model )
      end

      private :new
      
    end # class methods

    def initialize( model )
      @model = model
    end

    # ------------------------------------------------------------------
    # tsort

    alias tsort_each_node each_key
    
    def tsort_each_child( paramSetName, &block)

      # # no depencies if no name ??
      # return unless key?( paramSetName )
      
      # access the object to sort
      # puts "fetch(#{paramSetName}) in #{keys}"
      paramSet = fetch(paramSetName)
      
      # find dependencies amongst the refenced paramSets (TestCase)
      paramSet.parameters.
        select do |parameter|
        parameter.isReference
      end.                                                      # consider only refences
        map do |parameter|
        parameter.getResolvedReference( model ).getId
      end.                                                      # resolve paramSet referenced
        each(&block)                                            # process tsort block for each paramSetname
    end
    
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tla-sbuilder-0.2.2 lib/sbuilder/param_sets.rb
tla-sbuilder-0.2.1 lib/sbuilder/param_sets.rb
tla-sbuilder-0.1.0 lib/sbuilder/param_sets.rb