Class: DSort::DSortPrivate::DSortObject

Inherits:
Object
  • Object
show all
Includes:
TSort
Defined in:
lib/prick/dsort.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#depsObject (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