class Graphy::Node
Attributes
diagram[RW]
name[RW]
shape[RW]
Public Class Methods
for(node, **params)
click to toggle source
# 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
new(**params)
click to toggle source
# File lib/graphy/node.rb, line 16 def initialize(**params) @name = params[:name].to_s @diagram = params[:diagram] @shape = params.fetch(:shape, 'circle') end
Public Instance Methods
add_dependency(dependency, **options)
click to toggle source
# 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
Also aliased as: uses
build(&block)
click to toggle source
# File lib/graphy/node.rb, line 31 def build(&block) instance_eval(&block) if block_given? gnode end
gnode()
click to toggle source
# File lib/graphy/node.rb, line 36 def gnode @gnode ||= find_or_draw end
to_s()
click to toggle source
# File lib/graphy/node.rb, line 40 def to_s "#{self.class}<#{name}>" end
Protected Instance Methods
draw_edge(dependency, **options)
click to toggle source
# File lib/graphy/node.rb, line 46 def draw_edge(dependency, **options) diagram.draw_edge(gnode, dependency.gnode, options) end
label()
click to toggle source
# File lib/graphy/node.rb, line 57 def label "#{name}\n" end
node_params()
click to toggle source
# File lib/graphy/node.rb, line 50 def node_params { label: label, shape: shape } end
Private Instance Methods
find_or_draw()
click to toggle source
# File lib/graphy/node.rb, line 63 def find_or_draw return diagram.get_node(name) if diagram.node_exists?(name) diagram.draw_node(name, node_params) end