lib/y_petri/net/state/feature/firing.rb in y_petri-2.1.16 vs lib/y_petri/net/state/feature/firing.rb in y_petri-2.1.17
- old
+ new
@@ -4,10 +4,12 @@
#
class YPetri::Net::State::Feature::Firing < YPetri::Net::State::Feature
attr_reader :transition
class << self
+ # Customization of the Class#parametrize method.
+ #
def parametrize *args
Class.instance_method( :parametrize ).bind( self ).( *args ).tap do |ç|
ç.instance_variable_set( :@instances,
Hash.new do |hsh, id|
case id
@@ -36,27 +38,49 @@
def new id
instances[ id ]
end
+ # Alias of #new method.
+ #
def of id
new id
end
end
+ # The constructor of a marking feature takes exactly one argument (transition
+ # identifier).
+ #
def initialize transition
@transition = net.transition( transition )
end
+ # Extracts the receiver marking feature from the argument. This can be
+ # typically a simulation instance.
+ #
def extract_from arg, **nn
case arg
when YPetri::Simulation then
arg.send( :tS_transitions, [ transition ] ).first.firing
else
fail TypeError, "Argument type not supported!"
end
end
+ # A string briefly describing the firing feature.
+ #
+ def to_s
+ label
+ end
+
+ # Label for the firing feature (to use in the graphics etc.)
+ #
def label
"F:#{transition.name}"
+ end
+
+ # Inspect string of the firing feature.
+ #
+ def inspect
+ "<Feature::Firing of #{transition}>"
end
end # YPetri::Net::State::Feature::Firing