blob: fc05cafd943a888d1ec401afa7fc963585fbd548 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# Created by Luke Kanies on 2006-11-16.
# Copyright (c) 2006. All rights reserved.
require 'puppet'
require 'puppet/simple_graph'
# A module that handles the small amount of graph stuff in Puppet.
module Puppet::Util::Graph
# Make a graph where each of our children gets converted to
# the receiving end of an edge. Call the same thing on all
# of our children, optionally using a block
def to_graph(graph = nil, &block)
# Allow our calling function to send in a graph, so that we
# can call this recursively with one graph.
graph ||= Puppet::SimpleGraph.new
self.each do |child|
unless block_given? and ! yield(child)
graph.add_edge(self, child)
if child.respond_to?(:to_graph)
child.to_graph(graph, &block)
end
end
end
# Do a topsort, which will throw an exception if the graph is cyclic.
graph
end
end
|