Sha256: 9fdb403cd45cbae7dd14f4d1b9719bf7e820b17d31a7e054616ee62594148c28

Contents?: true

Size: 800 Bytes

Versions: 72

Compression:

Stored size: 800 Bytes

Contents

module God
  class DependencyGraph
    attr_accessor :nodes
    
    def initialize
      self.nodes = {}
    end
    
    def add(a, b)
      node_a = self.nodes[a] || Node.new(a)
      node_b = self.nodes[b] || Node.new(b)
      
      node_a.add(node_b)
      
      self.nodes[a] ||= node_a
      self.nodes[b] ||= node_b
    end
  end
end

module God
  class DependencyGraph
    class Node
      attr_accessor :name
      attr_accessor :dependencies
      
      def initialize(name)
        self.name = name
        self.dependencies = []
      end
      
      def add(node)
        self.dependencies << node unless self.dependencies.include?(node)
      end
      
      def has_node?(node)
        (self == node) || self.dependencies.any { |x| x.has_node?(node) }
      end
    end
  end
end

Version data entries

72 entries across 72 versions & 21 rubygems

Version Path
dguettler-god-0.7.13.2 lib/god/dependency_graph.rb
dguettler-god-0.7.13.3 lib/god/dependency_graph.rb
dosire-god-0.7.10 lib/god/dependency_graph.rb
dosire-god-0.7.12 lib/god/dependency_graph.rb
dosire-god-0.7.9 lib/god/dependency_graph.rb
dunedain289-god-0.7.12.1 lib/god/dependency_graph.rb
dustin-god-0.7.7.1 lib/god/dependency_graph.rb
eric-god-0.7.10 lib/god/dependency_graph.rb
eric-god-0.7.11 lib/god/dependency_graph.rb
eric-god-0.7.12 lib/god/dependency_graph.rb
eric-god-0.7.14 lib/god/dependency_graph.rb
eric-god-0.7.7 lib/god/dependency_graph.rb
fotonauts-god-0.7.10 lib/god/dependency_graph.rb
fotonauts-god-0.7.12 lib/god/dependency_graph.rb
gohanlonllc-god-0.7.9 lib/god/dependency_graph.rb
gordoncww-god-0.7.11.1 lib/god/dependency_graph.rb
jreynolds-god-0.7.13 lib/god/dependency_graph.rb
jwilkins-god-0.7.9 lib/god/dependency_graph.rb
mathieuravaux-god-0.7.11 lib/god/dependency_graph.rb
mojombo-god-0.7.10 lib/god/dependency_graph.rb