Class: Graphviz::Node
- Inherits:
-
Object
- Object
- Graphviz::Node
- Defined in:
- lib/graphviz/graph.rb
Overview
Represents a visual node in the graph, which can be connected to other nodes.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#attributes ⇒ Hash
Any attributes specified for this node.
-
#connections ⇒ Array<Edge>
readonly
Any edges connecting to other nodes.
-
#name ⇒ String
readonly
The unique name of the node.
Instance Method Summary collapse
-
#add_node(name = nil, **attributes) ⇒ Object
Add a node and #connect to it.
-
#attach(parent) ⇒ Object
Attach this node to the given graph:.
-
#connect(destination, attributes = {}) ⇒ Object
Create an edge between this node and the destination with the specified options.
-
#connected?(node) ⇒ Boolean
Calculate if this node is connected to another.
-
#dump_attributes(attributes) ⇒ Object
Dump the attributes to dot text format.
- #dump_graph(buffer, indent, options) ⇒ Object
-
#dump_value(value) ⇒ Object
Dump the value to dot text format.
- #identifier ⇒ Object
-
#initialize(name, graph = nil, **attributes) ⇒ Node
constructor
Initialize the node in the graph with the unique name.
Constructor Details
#initialize(name, graph = nil, **attributes) ⇒ Node
Initialize the node in the graph with the unique name.
28 29 30 31 32 33 34 35 |
# File 'lib/graphviz/graph.rb', line 28 def initialize(name, graph = nil, **attributes) @name = name @attributes = attributes @connections = [] graph << self if graph end |
Instance Attribute Details
#attributes ⇒ Hash
Returns Any attributes specified for this node.
49 50 51 |
# File 'lib/graphviz/graph.rb', line 49 def attributes @attributes end |
#connections ⇒ Array<Edge> (readonly)
Returns Any edges connecting to other nodes.
46 47 48 |
# File 'lib/graphviz/graph.rb', line 46 def connections @connections end |
#name ⇒ String (readonly)
Returns The unique name of the node.
43 44 45 |
# File 'lib/graphviz/graph.rb', line 43 def name @name end |
Instance Method Details
#add_node(name = nil, **attributes) ⇒ Object
Add a node and #connect to it.
68 69 70 71 72 73 74 |
# File 'lib/graphviz/graph.rb', line 68 def add_node(name = nil, **attributes) node = @graph.add_node(name, **attributes) connect(node) return node end |
#attach(parent) ⇒ Object
Attach this node to the given graph:
38 39 40 |
# File 'lib/graphviz/graph.rb', line 38 def attach(parent) @graph = parent end |
#connect(destination, attributes = {}) ⇒ Object
Create an edge between this node and the destination with the specified options.
53 54 55 56 57 58 59 |
# File 'lib/graphviz/graph.rb', line 53 def connect(destination, attributes = {}) edge = Edge.new(@graph, self, destination, attributes) @connections << edge return edge end |
#connected?(node) ⇒ Boolean
Calculate if this node is connected to another. O(N) search required.
62 63 64 |
# File 'lib/graphviz/graph.rb', line 62 def connected?(node) return @connections.find{|edge| edge.destination == node} end |
#dump_attributes(attributes) ⇒ Object
Dump the attributes to dot text format.
97 98 99 100 101 102 103 |
# File 'lib/graphviz/graph.rb', line 97 def dump_attributes(attributes) if attributes.size > 0 "[" + attributes.collect{|(name, value)| "#{name}=#{dump_value(value)}"}.join(", ") + "]" else "" end end |
#dump_graph(buffer, indent, options) ⇒ Object
80 81 82 83 84 85 |
# File 'lib/graphviz/graph.rb', line 80 def dump_graph(buffer, indent, ) node_attributes_text = dump_attributes(@attributes) node_name = dump_value(self.identifier) buffer.puts "#{indent}#{node_name}#{node_attributes_text};" end |
#dump_value(value) ⇒ Object
Dump the value to dot text format.
88 89 90 91 92 93 94 |
# File 'lib/graphviz/graph.rb', line 88 def dump_value(value) if Symbol === value value.to_s else value.inspect end end |
#identifier ⇒ Object
76 77 78 |
# File 'lib/graphviz/graph.rb', line 76 def identifier @name end |