Skip to content
/ digraph Public

A small lib for generating GraphViz dot digraphs from ruby.

License

Notifications You must be signed in to change notification settings

ander/digraph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Digraph
=======

A small lib for generating GraphViz dot digraphs from ruby.

If you want to use a DSL-like definition for a graph, you can try e.g.

graph = Digraph.new do
  a >> b['color=red'] >> c >> d
  c >> g
end

Where 'color=red' is an attribute of the node b. 

Or, you can do it like this:

graph = Digraph::Graph.new

a = graph.add_node('a')
b = graph.add_node('b')
b['color=red']
graph.add_edge(a,b)
...

-----
If you need to add attributes to edges, use the E-method
for wrapping the edge attributes along with the destination node

Digraph.new do
  a >> E(b, 'style=dotted') >> c
  c >> E(d['shape=box'], 'label="required"')
end

or graph.add_edge(c, d, 'label="required"')

-----
You can set the graph attributes with instance variables:

Digraph.new do
  @size = "4,4"
end

Or using add_attribute:

graph = Digraph::Graph.new
graph.add_attribute("size", "4,4")

-----
You can also give global attributes in a hash

Digraph.new({:node => 'style=filled, fillcolor="#294b76"'}) do
...
end

-----
Subgraphs are also possible:

Digraph.new do
  
  subgraph(:cluster0, {:node => 'style=filled,color=white'}) do
    @style = 'filled'
    @color = 'lightgrey'
    a0 >> a1 >> a2 >> a3
    @label = "process #1"
  end
  
 subgraph(:cluster1, {:node => 'style=filled'}) do
    b0 >> b1 >> b2 >> b3
    @label = "process #2"
    @color = 'blue'
  end
  
  start >> a0
  start >> b0
  a1 >> b3
  b2 >> a3
  a3 >> a0
  a3 >> theend
  b3 >> theend
  start['shape=Mdiamond']
  theend['shape=Msquare']
end

-----
Write the graph by calling your graph's write-method. 
Change Digraph::GRAPH_DIR as needed. See the source.


Cheers.

About

A small lib for generating GraphViz dot digraphs from ruby.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages