class CooCoo::Dot::Writer
Public Class Methods
new()
click to toggle source
# File lib/coo-coo/dot.rb, line 71 def initialize end
Public Instance Methods
indent(size)
click to toggle source
# File lib/coo-coo/dot.rb, line 92 def indent(size) " " * size end
start_block(kind, depth) { |depth| ... }
click to toggle source
# File lib/coo-coo/dot.rb, line 102 def start_block(kind, depth) [ indent(depth) + "#{kind} {", *yield(depth + 1), indent(depth) + "}" ] end
write(graph, io)
click to toggle source
# File lib/coo-coo/dot.rb, line 74 def write(graph, io) io.write(write_graph(graph).join("\n")) self end
write_edges(edges, depth)
click to toggle source
# File lib/coo-coo/dot.rb, line 115 def write_edges(edges, depth) edges.collect do |edge| nodes = edge.nodes.join(" -> ") indent(depth) + "#{nodes}[#{write_options(edge.options)}];" end end
write_graph(g, depth = 0)
click to toggle source
# File lib/coo-coo/dot.rb, line 79 def write_graph(g, depth = 0) start_block("#{g.kind}", depth) do |d| lines = [] lines += write_graph_options(g, d) g.blocks.each do |kid| lines += write_graph(kid, d) end lines += write_nodes(g.nodes, d) lines += write_edges(g.edges, d) lines end end
write_graph_options(graph, depth)
click to toggle source
# File lib/coo-coo/dot.rb, line 96 def write_graph_options(graph, depth) graph.options.collect do |key, value| indent(depth) + "#{key}=\"#{value}\";" end end
write_nodes(nodes, depth)
click to toggle source
# File lib/coo-coo/dot.rb, line 109 def write_nodes(nodes, depth) nodes.collect do |node| indent(depth) + "#{node.name}[#{write_options(node.options)}];" end end
write_options(options)
click to toggle source
# File lib/coo-coo/dot.rb, line 122 def write_options(options) options.collect do |key, value| "#{key}=\"#{value}\"" end.join(",") end