class YaGraph::Graph
Constants
- RANKDIR_LR
Public Class Methods
new()
click to toggle source
# File lib/yagraphlib.rb, line 43 def initialize() @nodes = {} @edges = {} @subgraphs = {} end
Public Instance Methods
edge?(s, e)
click to toggle source
# File lib/yagraphlib.rb, line 53 def edge?(s, e) @edges.any? do |k, v| v.start == s and v.finish == e end end
edges(edge)
click to toggle source
# File lib/yagraphlib.rb, line 49 def edges(edge) @edges[edge.uid] ||= edge end
initial_nodes()
click to toggle source
# File lib/yagraphlib.rb, line 71 def initial_nodes() initial = {} @nodes.each {|k, n| initial[k] = n} @edges.each do |k, e| initial.delete(e.finish.uid) end initial.values end
nodes(node)
click to toggle source
# File lib/yagraphlib.rb, line 59 def nodes(node) @nodes[node.uid] ||= node end
rankdir(mode)
click to toggle source
# File lib/yagraphlib.rb, line 67 def rankdir(mode) @rankdir = mode end
subgraph(subgraph)
click to toggle source
# File lib/yagraphlib.rb, line 63 def subgraph(subgraph) @subgraphs[subgraph.uid] ||= subgraph end
terminal_nodes()
click to toggle source
# File lib/yagraphlib.rb, line 80 def terminal_nodes() terminal = {} @nodes.each {|k, n| terminal[k] = n} @edges.each do |k, e| terminal.delete(e.start.uid) end terminal.values end
to_graphviz(out)
click to toggle source
# File lib/yagraphlib.rb, line 89 def to_graphviz(out) out.puts("digraph main {\n") out.puts(" rankdir=#{@rankdir}") if @rankdir @subgraphs.each {|k, s| s.to_graphviz(out) } @nodes.each {|k, n| n.to_graphviz(out) } @edges.each {|k, e| e.to_graphviz(out) } out.puts("}") end