class Pod::Target::Commands::Graph

Attributes

nodes[RW]

Public Class Methods

new() click to toggle source
# File lib/pod/target/commands/resolve/graph.rb, line 22
def initialize
    @nodes = {}
end

Public Instance Methods

add_neighbor(source, destination) click to toggle source
# File lib/pod/target/commands/resolve/graph.rb, line 51
def add_neighbor(source, destination)
    source.add_neighbor(destination)
end
add_target_info(targets) click to toggle source
# File lib/pod/target/commands/resolve/graph.rb, line 26
def add_target_info(targets)
    targets.each do |target|
        dependency_names = find_dependencies(target)
        node = node_for_target_display_name(target.display_name)
        dependency_names.each do |dependency_name|
            dependency_node = node_for_target_display_name(dependency_name)
            add_neighbor(node, dependency_node)
        end
    end
end
bfs(node, level_map, depth) click to toggle source
# File lib/pod/target/commands/resolve/graph.rb, line 55
def bfs(node, level_map, depth)
    return if depth == 3
    name = node.name                    
    if level_map.key?(name)
        level_map[name] = [level_map[name], depth].max
    else 
        level_map[name] = depth
    end
    node.neighbors.each do |neighbor|
        bfs(neighbor, level_map, depth+1)
    end
end
find_dependencies(target) click to toggle source
# File lib/pod/target/commands/resolve/graph.rb, line 37
def find_dependencies(target)
    dependencies = target.dependencies
    dependencies.map { |dependency| dependency.name }.compact
end
node_for_target_display_name(display_name) click to toggle source
# File lib/pod/target/commands/resolve/graph.rb, line 42
def node_for_target_display_name(display_name)
    node = nodes[display_name]
    if node.nil?
        node = Node.new(display_name)
        nodes[display_name] = node
    end
    node
end