Sha256: a589760f57b879999c972d7a8a397043dfda007f585f0390a01dea75c610f414

Contents?: true

Size: 866 Bytes

Versions: 1

Compression:

Stored size: 866 Bytes

Contents

#encoding: utf-8

# Provides basic skeleton for dependency injection for the triples of the
# parametrized subclasses of Place, Transition and Net in different workspaces.
#
module YPetri::World::Dependency
  delegate :Place, :Transition, :Net, to: :world

  # Place instance identification.
  # 
  def place id
    world.place( id )
  end

  # Transition instance identification.
  # 
  def transition id
    world.transition( id )
  end

  # Element instance identification.
  # 
  def element id
    begin
      place( id )
    rescue NameError, TypeError
      begin
        transition( id )
      rescue NameError, TypeError => err
        raise TypeError, "Unrecognized place or transition: #{element} (#{err})"
      end
    end
  end

  # Net instance identification.
  # 
  def net id
    Net().instance( id )
  end
end # module YPetri::DependencyInjection

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
y_petri-2.1.3 lib/y_petri/world/dependency.rb