Sha256: 38ca72066a0acbdd008cb621745cf12a6a77763763b912923c3f02a88be83174

Contents?: true

Size: 633 Bytes

Versions: 1

Compression:

Stored size: 633 Bytes

Contents

require 'tsort'
require 'delegate'

module DependencyManager
  # Dependency tree implementation using TSort to resolve the order in which
  # factories should be run.
  class DependencyTree < Delegator
    include TSort

    attr_reader :resources

    # Allow access to the underlying hash
    alias_method :__getobj__, :resources

    def initialize(resources)
      @resources = resources
    end

    # TSort interface method
    def tsort_each_node(&block)
      @resources.each_key(&block)
    end

    # TSort interface method
    def tsort_each_child(node, &block)
      @resources.fetch(node).each(&block)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dependency_manager-0.0.1 lib/dependency_manager/dependency_tree.rb