Class: Pod::Target::Commands::Graph

Inherits:
Object
  • Object
show all
Defined in:
lib/pod/target/commands/resolve/graph.rb

Defined Under Namespace

Classes: Node

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeGraph

Returns a new instance of Graph.



22
23
24
# File 'lib/pod/target/commands/resolve/graph.rb', line 22

def initialize
    @nodes = {}
end

Instance Attribute Details

#nodesObject

Returns the value of attribute nodes.



21
22
23
# File 'lib/pod/target/commands/resolve/graph.rb', line 21

def nodes
  @nodes
end

Instance Method Details

#add_neighbor(source, destination) ⇒ Object



51
52
53
# File 'lib/pod/target/commands/resolve/graph.rb', line 51

def add_neighbor(source, destination)
    source.add_neighbor(destination)
end

#add_target_info(targets) ⇒ Object



26
27
28
29
30
31
32
33
34
35
# 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) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
# 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) ⇒ Object



37
38
39
40
# 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) ⇒ Object



42
43
44
45
46
47
48
49
# 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