Sha256: 1d2555d1d7e0e7d5f2cd75be364f70961e9120100ebea416ae006d088e325e6c

Contents?: true

Size: 943 Bytes

Versions: 2

Compression:

Stored size: 943 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.
#
class YPetri::World
  module 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 Dependency
end # module YPetri::World

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
y_petri-2.1.7 lib/y_petri/world/dependency.rb
y_petri-2.1.6 lib/y_petri/world/dependency.rb