Class: GraphViz::Node
- Includes:
- Constants
- Defined in:
- lib/graphviz/node.rb
Constant Summary
Constants included from Constants
Constants::EDGESATTRS, Constants::FORMATS, Constants::GENCS_ATTRS, Constants::GRAPHSATTRS, Constants::GRAPHTYPE, Constants::NODESATTRS, Constants::PROGRAMS, Constants::RGV_VERSION
Instance Attribute Summary collapse
- 
  
    
      #incidents  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    List of nodes that are incident to the given node (in a directed graph neighbors == incidents). 
- 
  
    
      #neighbors  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    List of nodes that are directly accessible from given node (in a directed graph neighbors == incidents). 
Instance Method Summary collapse
- 
  
    
      #<<(node)  ⇒ Object 
    
    
      (also: #>, #-, #>>)
    
  
  
  
  
  
  
  
  
  
    Create an edge between the current node and the node node.
- 
  
    
      #[](attribute_name)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Get the value of the node attribute attribute_name.
- 
  
    
      #[]=(attribute_name, attribute_value)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Set value attribute_valueto the node attributeattribute_name.
- #each_attribut(global = true, &b) ⇒ Object
- 
  
    
      #each_attribute(global = true, &b)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Calls block once for each attribute of the node, passing the name and value to the block as a two-element array. 
- 
  
    
      #id  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Get the node ID. 
- 
  
    
      #index  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return the node index. 
- 
  
    
      #index=(i)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    :nodoc:. 
- 
  
    
      #initialize(node_id, parent_graph)  ⇒ Node 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    Create a new node. 
- 
  
    
      #method_missing(idName, *args, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Add node options use node.<option>=<value> or node.<option>( <value> ). 
- 
  
    
      #output  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    :nodoc:. 
- 
  
    
      #pg  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    :nodoc:. 
- 
  
    
      #root_graph  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return the root graph. 
- 
  
    
      #set {|_self| ... } ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Set node attributes. 
Methods included from Constants
Constructor Details
#initialize(node_id, parent_graph) ⇒ Node
Create a new node
- 
node_id : ID of the node 
- 
parent_graph : Graph 
| 33 34 35 36 37 38 39 40 | # File 'lib/graphviz/node.rb', line 33 def initialize( node_id, parent_graph ) @neighbors = [] @incidents = [] @node_id = node_id @parent_graph = parent_graph @node_attributes = GraphViz::Attrs::new( nil, "node", NODESATTRS ) @index = nil end | 
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(idName, *args, &block) ⇒ Object
Add node options use node.<option>=<value> or node.<option>( <value> )
| 126 127 128 129 130 | # File 'lib/graphviz/node.rb', line 126 def method_missing( idName, *args, &block ) #:nodoc: xName = idName.id2name self[xName.gsub( /=$/, "" )]=args[0] end | 
Instance Attribute Details
#incidents ⇒ Object (readonly)
List of nodes that are incident to the given node (in a directed graph neighbors == incidents)
| 27 28 29 | # File 'lib/graphviz/node.rb', line 27 def incidents @incidents end | 
#neighbors ⇒ Object (readonly)
List of nodes that are directly accessible from given node (in a directed graph neighbors == incidents)
| 25 26 27 | # File 'lib/graphviz/node.rb', line 25 def neighbors @neighbors end | 
Instance Method Details
#<<(node) ⇒ Object Also known as: >, -, >>
Create an edge between the current node and the node node
| 97 98 99 100 101 102 103 104 105 | # File 'lib/graphviz/node.rb', line 97 def <<( node ) if( node.class == Array ) node.each do |no| self << no end else return GraphViz::commonGraph( node, self ).add_edges( self, node ) end end | 
#[](attribute_name) ⇒ Object
Get the value of the node attribute attribute_name
| 67 68 69 70 71 72 73 74 75 76 | # File 'lib/graphviz/node.rb', line 67 def []( attribute_name ) if Hash === attribute_name attribute_name.each do |key, value| self[key] = value end return self else (@node_attributes[attribute_name.to_s].nil?)?nil:@node_attributes[attribute_name.to_s].clone end end | 
#[]=(attribute_name, attribute_value) ⇒ Object
Set value attribute_value to the node attribute attribute_name
| 61 62 63 64 | # File 'lib/graphviz/node.rb', line 61 def []=( attribute_name, attribute_value ) attribute_value = attribute_value.to_s if attribute_value.class == Symbol @node_attributes[attribute_name.to_s] = attribute_value end | 
#each_attribut(global = true, &b) ⇒ Object
| 91 92 93 94 | # File 'lib/graphviz/node.rb', line 91 def each_attribut(global = true, &b) warn "`GraphViz::Node#each_attribut` is deprecated, please use `GraphViz::Node#each_attribute`" each_attribute(global, &b) end | 
#each_attribute(global = true, &b) ⇒ Object
Calls block once for each attribute of the node, passing the name and value to the block as a two-element array.
If global is set to false, the block does not receive the attributes set globally
| 82 83 84 85 86 87 88 89 90 | # File 'lib/graphviz/node.rb', line 82 def each_attribute(global = true, &b) attrs = @node_attributes.to_h if global attrs = pg.node.to_h.merge attrs end attrs.each do |k,v| yield(k,v) end end | 
#id ⇒ Object
Get the node ID
| 43 44 45 | # File 'lib/graphviz/node.rb', line 43 def id @node_id.clone end | 
#index ⇒ Object
Return the node index
| 48 49 50 | # File 'lib/graphviz/node.rb', line 48 def index @index end | 
#index=(i) ⇒ Object
:nodoc:
| 51 52 53 | # File 'lib/graphviz/node.rb', line 51 def index=(i) #:nodoc: @index = i if @index == nil end | 
#output ⇒ Object
:nodoc:
| 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | # File 'lib/graphviz/node.rb', line 136 def output #:nodoc: # reserved words, they aren't accepted in dot as node name reserved_names = ["node", "edge","graph", "digraph", "subgraph", "strict"] #node_id = @node_id.clone #node_id = '"' << node_id << '"' if node_id.match( /^[a-zA-Z_]+[a-zA-Z0-9_\.]*$/ ).nil? node_id = GraphViz.escape(@node_id) # add a check to see if the node names are valid # if they aren't is added an _ before # and the print staies the same, because of the label xOut = reserved_names.include?(node_id) ? String.new << "_" + node_id : String.new << node_id xAttr = String.new xSeparator = "" if @node_attributes.data.has_key?("label") and @node_attributes.data.has_key?("html") @node_attributes.data.delete("label") end @node_attributes.data.each do |k, v| xAttr << xSeparator + k + " = " + v.to_gv xSeparator = ", " end if xAttr.length > 0 xOut << " [" + xAttr + "]" end xOut << ";" return( xOut ) end | 
#pg ⇒ Object
:nodoc:
| 132 133 134 | # File 'lib/graphviz/node.rb', line 132 def pg #:nodoc: @parent_graph end | 
#root_graph ⇒ Object
Return the root graph
| 56 57 58 | # File 'lib/graphviz/node.rb', line 56 def root_graph return( (self.pg.nil?) ? nil : self.pg.root_graph ) end | 
#set {|_self| ... } ⇒ Object
Set node attributes
Example :
n = graph.add_nodes( ... )
...
n.set { |_n|
  _n.color = "blue"
  _n.fontcolor = "red"
}
| 120 121 122 | # File 'lib/graphviz/node.rb', line 120 def set( &b ) yield( self ) end |