Method: MotionBlender::GraphMaker#build

Defined in:
lib/motion_blender/graph_maker.rb

#buildObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/motion_blender/graph_maker.rb', line 18

def build
  g = GraphViz.new(@title || 'Graph', type: :digraph, use: @layout)
  label = [@title, (@filter && "/#{@filter}/")].compact.join(' ')
  g[:label] = label if label.present?
  g[:overlap] = false

  deps =
    @dependencies
    .select { |k, _| acceptable? k }
    .map { |k, v| [k, v.select { |f| acceptable? f }] }
  deps.map { |k, v| [k, *v] }.flatten.uniq.reverse_each do |f|
    g.add_node f, node_options_for(f)
  end
  deps.each do |k, v|
    v.each { |f| g.add_edge k, f, edge_options_for(k, f) }
  end

  g.output(output_format => @output)
end