class RPetri::Arc

Attributes

options[R]
source[R]
target[R]

Public Class Methods

new(source, target, options = {}) click to toggle source
Calls superclass method
# File lib/rpetri/objects/arc.rb, line 5
def initialize(source, target, options = {})
  @source = source
  @target = target
  @options = options
  validate!
  super()
end

Public Instance Methods

runnable?(tokens_at_source) click to toggle source
# File lib/rpetri/objects/arc.rb, line 13
def runnable?(tokens_at_source)
  tokens_at_source > 0
end
tokens_to_give(tokens_at_target) click to toggle source
# File lib/rpetri/objects/arc.rb, line 21
def tokens_to_give(tokens_at_target)
  1
end
tokens_to_take(tokens_at_source) click to toggle source
# File lib/rpetri/objects/arc.rb, line 17
def tokens_to_take(tokens_at_source)
  1
end

Protected Instance Methods

validate!() click to toggle source
# File lib/rpetri/objects/arc.rb, line 27
def validate!
  validate_item(@source, 'Source')
  validate_item(@target, 'Target')
  source_type = @source.is_a?(Place) ? :place : :target
  target_type = @target.is_a?(Place) ? :place : :target
  raise ValidationError, 'Source and Target should be different type' if source_type == target_type
end
validate_item(item, name) click to toggle source
# File lib/rpetri/objects/arc.rb, line 35
def validate_item(item, name)
  return if item.is_a?(Place) || item.is_a?(Transition)
  raise ValidationError, "#{name} should be Place or Transition"
end