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