Class: Graph::Node

Inherits:
Thingy show all
Defined in:
lib/graph.rb

Overview

Nodes in the graph.

Instance Attribute Summary collapse

Attributes inherited from Thingy

#attributes, #graph

Instance Method Summary collapse

Methods inherited from Thingy

#attributes?, #initialize_copy, #label

Constructor Details

#initialize(graph, name) ⇒ Node

Create a new Node. Takes a parent graph and a name.



598
599
600
601
# File 'lib/graph.rb', line 598

def initialize graph, name
  super graph
  self.name = name
end

Instance Attribute Details

#nameObject

:nodoc:



577
578
579
# File 'lib/graph.rb', line 577

def name
  @name
end

Instance Method Details

#>>(name) ⇒ Object Also known as: <<

Create a new node with name and an edge between them pointing from self to the new node.



607
608
609
610
# File 'lib/graph.rb', line 607

def >> name
  self[name] # creates node and edge
  self
end

#[](dep_name) ⇒ Object

Returns the edge between self and dep_name.



617
618
619
# File 'lib/graph.rb', line 617

def [] dep_name
  graph.edges[name][dep_name]
end

#connected?Boolean

Is this node connected to the graph?

Returns:

  • (Boolean)


582
583
584
585
586
# File 'lib/graph.rb', line 582

def connected?
  edges = graph.edges

  edges.include?(name) or edges.any? { |from, deps| deps.include? name }
end

#orphan?Boolean

Is this node an orphan? (ie, not connected?)

Returns:

  • (Boolean)


591
592
593
# File 'lib/graph.rb', line 591

def orphan?
  not connected?
end

#to_sObject

Returns the node in dot syntax.



624
625
626
627
628
629
630
# File 'lib/graph.rb', line 624

def to_s
  if self.attributes? then
    "%-20p [ %-20s ]" % [name, attributes.join(',')]
  else
    "#{name.inspect}"
  end
end