Class: DSort::DSortPrivate::DSortObject
- Inherits:
-
Object
- Object
- DSort::DSortPrivate::DSortObject
- Includes:
- TSort
- Defined in:
- lib/prick/dsort.rb
Instance Attribute Summary collapse
-
#deps ⇒ Object
readonly
Hash from element to array of dependencies.
Instance Method Summary collapse
-
#initialize(a, &block) ⇒ DSortObject
constructor
Create @deps hash from object to list of dependencies.
- #tsort_each_child(node, &block) ⇒ Object
-
#tsort_each_node(&block) ⇒ Object
TSort virtual methods.
Constructor Details
#initialize(a, &block) ⇒ DSortObject
Create @deps hash from object to list of dependencies
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/prick/dsort.rb', line 107 def initialize(a, &block) @deps = {} if block_given? a = [a] if !a.is_a?(Array) a.each { |elem| find_dependencies(elem, &block) } else a.each { |obj, deps| (@deps[obj] ||= []).concat(deps.is_a?(Array) ? deps : [deps]) } end # Make sure all dependent objects are also represented as depending # objects: If we're given [:a, :b] we want the @deps hash to include # both :a and :b as keys @deps.values.each { |deps| (deps.is_a?(Array) ? deps : [deps]).each { |d| @deps[d] = [] if !@deps.key?(d) } } end |
Instance Attribute Details
#deps ⇒ Object (readonly)
Hash from element to array of dependencies
104 105 106 |
# File 'lib/prick/dsort.rb', line 104 def deps @deps end |
Instance Method Details
#tsort_each_child(node, &block) ⇒ Object
130 |
# File 'lib/prick/dsort.rb', line 130 def tsort_each_child(node, &block) @deps[node].each(&block) end |
#tsort_each_node(&block) ⇒ Object
TSort virtual methods
129 |
# File 'lib/prick/dsort.rb', line 129 def tsort_each_node(&block) @deps.each_key(&block) end |