Class: RGL::DOT::Graph
Overview
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.
Instance Attribute Summary
Attributes inherited from Element
Instance Method Summary collapse
-
#<<(element) ⇒ Object
(also: #push)
Adds a new node, edge, or subgraph to this graph.
-
#each_element(&block) ⇒ Object
Calls block once for each node, edge, or subgraph contained by this graph, passing the node, edge, or subgraph to the block.
-
#initialize(params = {}, option_list = GRAPH_OPTS+GRAPH_OPTS_LGCY) ⇒ Graph
constructor
Creates a new Graph with the params Hash providing settings for all graph options.
-
#pop ⇒ Object
Removes the most recently added node, edge, or subgraph from this graph and returns it.
-
#to_s(leader = '', indent = ' ') ⇒ Object
Returns a string representation of this graph which is consumable by the graphviz tools
dotandneato.
Constructor Details
#initialize(params = {}, option_list = GRAPH_OPTS+GRAPH_OPTS_LGCY) ⇒ Graph
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.
366 367 368 369 370 |
# File 'lib/rgl/rdot.rb', line 366 def initialize(params = {}, option_list = GRAPH_OPTS+GRAPH_OPTS_LGCY) super(params, option_list) @elements = params['elements'] ? params['elements'] : [] @dot_string = 'graph' end |
Instance Method Details
#<<(element) ⇒ Object Also known as: push
Adds a new node, edge, or subgraph to this graph.
:call-seq:
graph << element -> graph
388 389 390 391 |
# File 'lib/rgl/rdot.rb', line 388 def <<(element) @elements << element self end |
#each_element(&block) ⇒ Object
Calls block once for each node, edge, or subgraph contained by this graph, passing the node, edge, or subgraph to the block.
:call-seq:
graph.each_element {|element| block} -> graph
378 379 380 381 |
# File 'lib/rgl/rdot.rb', line 378 def each_element(&block) @elements.each(&block) self end |
#pop ⇒ Object
Removes the most recently added node, edge, or subgraph from this graph and returns it.
:call-seq:
graph.pop -> element
401 402 403 |
# File 'lib/rgl/rdot.rb', line 401 def pop @elements.pop end |
#to_s(leader = '', indent = ' ') ⇒ Object
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.
410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 |
# File 'lib/rgl/rdot.rb', line 410 def to_s(leader = '', indent = ' ') hdr = leader + @dot_string + (@name.nil? ? '' : ' ' + quote_ID(@name)) + " {\n" = @options.to_a.collect do |name, val| unless val.nil? if name == 'label' leader + indent + "#{quote_ID(name)} = #{quote_label(val)}" else leader + indent + "#{quote_ID(name)} = #{quote_ID(val)}" end end end.compact.join("\n") elements = @elements.collect do |element| element.to_s(leader + indent, indent) end.join("\n\n") hdr + (.empty? ? '' : + "\n\n") + (elements.empty? ? '' : elements + "\n") + leader + "}" end |