Class: Graphy::Node

Inherits:
Object
  • Object
show all
Defined in:
lib/graphy/node.rb

Direct Known Subclasses

Entity

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**params) ⇒ Node

Returns a new instance of Node.



16
17
18
19
20
# File 'lib/graphy/node.rb', line 16

def initialize(**params)
  @name = params[:name].to_s
  @diagram = params[:diagram]
  @shape = params.fetch(:shape, 'circle')
end

Instance Attribute Details

#diagramObject

Returns the value of attribute diagram.



3
4
5
# File 'lib/graphy/node.rb', line 3

def diagram
  @diagram
end

#nameObject

Returns the value of attribute name.



3
4
5
# File 'lib/graphy/node.rb', line 3

def name
  @name
end

#shapeObject

Returns the value of attribute shape.



3
4
5
# File 'lib/graphy/node.rb', line 3

def shape
  @shape
end

Class Method Details

.for(node, **params) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/graphy/node.rb', line 5

def self.for(node, **params)
  case node
  when Entity, Node
    node
  when String
    self.new(**params.merge(name: node))
  else
    raise 'Invalid node class'
  end
end

Instance Method Details

#add_dependency(dependency, **options) ⇒ Object Also known as: uses



22
23
24
25
26
27
28
# File 'lib/graphy/node.rb', line 22

def add_dependency(dependency, **options)
  dependency = self.class.for(dependency, diagram: diagram)
  return if Registry.edge?(self, dependency)

  Registry.add_edge(self, dependency)
  draw_edge(dependency, **options)
end

#build(&block) ⇒ Object



31
32
33
34
# File 'lib/graphy/node.rb', line 31

def build(&block)
  instance_eval(&block) if block_given?
  gnode
end

#gnodeObject



36
37
38
# File 'lib/graphy/node.rb', line 36

def gnode
  @gnode ||= find_or_draw
end

#to_sObject



40
41
42
# File 'lib/graphy/node.rb', line 40

def to_s
  "#{self.class}<#{name}>"
end