2008-01-07 19:11:38 +00:00
|
|
|
module AASM
|
|
|
|
module SupportingClasses
|
|
|
|
class StateTransition
|
|
|
|
attr_reader :from, :to, :opts
|
|
|
|
|
|
|
|
def initialize(opts)
|
|
|
|
@from, @to, @guard = opts[:from], opts[:to], opts[:guard]
|
|
|
|
@opts = opts
|
|
|
|
end
|
|
|
|
|
2008-02-21 15:46:06 +00:00
|
|
|
def perform(obj)
|
|
|
|
case @guard
|
|
|
|
when Symbol, String
|
|
|
|
obj.send(@guard)
|
|
|
|
when Proc
|
|
|
|
@guard.call(obj)
|
|
|
|
else
|
|
|
|
true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2008-01-07 19:11:38 +00:00
|
|
|
def ==(obj)
|
|
|
|
@from == obj.from && @to == obj.to
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|