class Funk::Graph
Public Class Methods
new(map)
click to toggle source
# File lib/funk/graph.rb, line 8 def initialize(map) fn_map = map.each_with_object({}) do |(name, impl), fn_map| fn = fn_map[name] = Fn.new(name, impl) fn.dependencies.each do |dep_name| fn_map[dep_name] ||= InputFn.new(dep_name) end end accum = Hash.new { |h,k| h[k] = [] } @nodes = fn_map.each_with_object(accum) do |(name, fn), graph| graph[fn] = [] fn.dependencies.each do |dep_name| graph[fn] << fn_map[dep_name] end end end
Public Instance Methods
tsort_each_child(n, &b)
click to toggle source
# File lib/funk/graph.rb, line 28 def tsort_each_child(n, &b) @nodes[n].each(&b) end
tsort_each_node(&b)
click to toggle source
# File lib/funk/graph.rb, line 32 def tsort_each_node(&b) @nodes.each_key(&b) end