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
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.
# 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
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
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
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
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