class Kludge::Parts

Public Class Methods

new() click to toggle source
# File lib/kludge/parts.rb, line 5
def initialize
  @parts = []
end

Public Instance Methods

<<(part) click to toggle source
# File lib/kludge/parts.rb, line 31
def <<(part)
  @parts << part
end
assign_family(node) click to toggle source
# 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() { |part| ... } click to toggle source
# File lib/kludge/parts.rb, line 9
def each
  @parts.each do |part|
    yield part
  end
end
graph() click to toggle source
# File lib/kludge/parts.rb, line 35
def graph
  @graph ||= begin
    leaves.map { |leaf|
      assign_family(leaf)
    }.uniq
  end
end
leaves() click to toggle source
# 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() click to toggle source
# File lib/kludge/parts.rb, line 27
def names
  @parts.map(&:name)
end
save() click to toggle source
# File lib/kludge/parts.rb, line 15
def save
  graph.each do |root|
    root.save
  end
end
valid?() click to toggle source
# File lib/kludge/parts.rb, line 21
def valid?
  graph.map do |root|
    root.valid?
  end.all?
end