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
dfs(node, level_map, depth)
click to toggle source
# File lib/pod/target/commands/resolve/graph.rb, line 55 def dfs(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| dfs(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