Class: Seafoam::Node

Inherits:
Object
  • Object
show all
Defined in:
lib/seafoam/graph.rb

Overview

A node, with properties, input edges, and output edges.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, props = nil) ⇒ Node

Returns a new instance of Node.



45
46
47
48
49
50
51
# File 'lib/seafoam/graph.rb', line 45

def initialize(id, props = nil)
  props ||= {}
  @id = id
  @inputs = []
  @outputs = []
  @props = props
end

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



43
44
45
# File 'lib/seafoam/graph.rb', line 43

def id
  @id
end

#inputsObject (readonly)

Returns the value of attribute inputs.



43
44
45
# File 'lib/seafoam/graph.rb', line 43

def inputs
  @inputs
end

#outputsObject (readonly)

Returns the value of attribute outputs.



43
44
45
# File 'lib/seafoam/graph.rb', line 43

def outputs
  @outputs
end

#propsObject (readonly)

Returns the value of attribute props.



43
44
45
# File 'lib/seafoam/graph.rb', line 43

def props
  @props
end

Instance Method Details

#adjacentObject

All adjacent nodes - from input and output edges.



59
60
61
# File 'lib/seafoam/graph.rb', line 59

def adjacent
  (inputs.map(&:from) + outputs.map(&:to)).uniq
end

#edgesObject

All edges - input and output.



54
55
56
# File 'lib/seafoam/graph.rb', line 54

def edges
  inputs + outputs
end

#id_and_labelObject

id (label)



64
65
66
67
68
69
70
# File 'lib/seafoam/graph.rb', line 64

def id_and_label
  if props[:label]
    "#{id} (#{props[:label]})"
  else
    id.to_s
  end
end

#inspectObject

Inspect.



73
74
75
# File 'lib/seafoam/graph.rb', line 73

def inspect
  "<Node #{id}>"
end