class RGL::DOT::Graph

A graph representation. Whether or not it is rendered as directed or undirected depends on which of the programs dot or neato is used to process and render the graph.

Public Class Methods

new(params = {}, option_list = GRAPH_OPTS) click to toggle source

Creates a new Graph with the params Hash providing settings for all graph options. The option_list parameter restricts those options to the list of valid names it contains. The exception to this is the elements option which, if specified, must be an Enumerable containing a list of nodes, edges, and/or subgraphs.

Calls superclass method
    # File lib/rgl/rdot.rb
309 def initialize(params = {}, option_list = GRAPH_OPTS)
310   super(params, option_list)
311   @elements   = params['elements'] ? params['elements'] : []
312   @dot_string = 'graph'
313 end

Public Instance Methods

graph << element → graph click to toggle source

Adds a new node, edge, or subgraph to this graph.

    # File lib/rgl/rdot.rb
331 def <<(element)
332   @elements << element
333   self
334 end
Also aliased as: push
each_element {|element| block} → graph click to toggle source

Calls block once for each node, edge, or subgraph contained by this graph, passing the node, edge, or subgraph to the block.

    # File lib/rgl/rdot.rb
321 def each_element(&block)
322   @elements.each(&block)
323   self
324 end
pop → element click to toggle source

Removes the most recently added node, edge, or subgraph from this graph and returns it.

    # File lib/rgl/rdot.rb
344 def pop
345   @elements.pop
346 end
Alias for: <<
to_s(leader = '', indent = ' ') click to toggle source

Returns a string representation of this graph which is consumable by the graphviz tools dot and neato. The leader parameter is used to indent every line of the returned string, and the indent parameter is used to additionally indent nested items.

    # File lib/rgl/rdot.rb
353 def to_s(leader = '', indent = '    ')
354   hdr = leader + @dot_string + (@name.nil? ? '' : ' ' + quote_ID(@name)) + " {\n"
355 
356   options = @options.to_a.collect do |name, val|
357     unless val.nil?
358       if name == 'label'
359         leader + indent + "#{quote_ID(name)} = #{quote_label(val)}"
360       else
361         leader + indent + "#{quote_ID(name)} = #{quote_ID(val)}"
362       end
363     end
364   end.compact.join("\n")
365 
366   elements = @elements.collect do |element|
367     element.to_s(leader + indent, indent)
368   end.join("\n\n")
369 
370   hdr + (options.empty? ? '' : options + "\n\n") +
371       (elements.empty? ? '' : elements + "\n") + leader + "}"
372 end