class Connected::GenericConnection

A generic implementation of an Edge

Attributes

from[R]
metric[R]
state[R]
to[R]

Public Class Methods

new(from:, to:, metric: 1, state: :open) click to toggle source
# File lib/connected/generic_connection.rb, line 10
def initialize(from:, to:, metric: 1, state: :open)
  validate_from(from)
  validate_to(to)
  validate_metric(metric)
  validate_state(state)

  raise 'Invalid Connection from and to same Vertex' if from == to

  @from = from
  @to = to
  @metric = metric
  @state = state
end

Public Instance Methods

metric=(value) click to toggle source
# File lib/connected/generic_connection.rb, line 24
def metric=(value)
  validate_metric(value)
  @metric = value
end
state=(setting) click to toggle source
# File lib/connected/generic_connection.rb, line 29
def state=(setting)
  validate_state(setting)
  @state = setting
end

Private Instance Methods

validate_from(node) click to toggle source
# File lib/connected/generic_connection.rb, line 36
def validate_from(node)
  raise 'Invalid from Node' unless node.is_a?(Vertex)
end
validate_metric(num) click to toggle source
# File lib/connected/generic_connection.rb, line 44
def validate_metric(num)
  raise 'Invalid metric' unless num.is_a?(Numeric) && num.positive?
end
validate_state(value) click to toggle source
# File lib/connected/generic_connection.rb, line 48
def validate_state(value)
  raise 'Invalid state' unless %i[open closed].include?(value)
end
validate_to(node) click to toggle source
# File lib/connected/generic_connection.rb, line 40
def validate_to(node)
  raise 'Invalid to Node' unless node.is_a?(Vertex)
end