Class: Kludge::Parts
Instance Method Summary collapse
- #<<(part) ⇒ Object
- #assign_family(node) ⇒ Object
- #each ⇒ Object
- #graph ⇒ Object
-
#initialize ⇒ Parts
constructor
A new instance of Parts.
- #leaves ⇒ Object
- #names ⇒ Object
- #save ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize ⇒ Parts
Returns a new instance of Parts.
5 6 7 |
# File 'lib/kludge/parts.rb', line 5 def initialize @parts = [] end |
Instance Method Details
#<<(part) ⇒ Object
31 32 33 |
# File 'lib/kludge/parts.rb', line 31 def <<(part) @parts << part end |
#assign_family(node) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/kludge/parts.rb', line 43 def assign_family(node) parent = @parts.detect { |part| part.name == node.dependency } return node unless parent node.parent = parent parent.children << node assign_family(parent) end |
#each ⇒ Object
9 10 11 12 13 |
# File 'lib/kludge/parts.rb', line 9 def each @parts.each do |part| yield part end end |
#graph ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/kludge/parts.rb', line 35 def graph @graph ||= begin leaves.map { |leaf| assign_family(leaf) }.uniq end end |
#leaves ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/kludge/parts.rb', line 51 def leaves leaves = @parts.dup @parts.each do |part| leaves.delete_if { |leaf| leaf.name == part.dependency } end leaves end |
#names ⇒ Object
27 28 29 |
# File 'lib/kludge/parts.rb', line 27 def names @parts.map(&:name) end |