lib/transitions/state_transition.rb in transitions-0.1.12 vs lib/transitions/state_transition.rb in transitions-0.1.13
- old
+ new
@@ -1,27 +1,5 @@
-# Copyright (c) 2009 Rick Olson
-
-# Permission is hereby granted, free of charge, to any person
-# obtaining a copy of this software and associated documentation files
-# (the "Software"), to deal in the Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, sublicense, and/or sell copies of the Software,
-# and to permit persons to whom the Software is furnished to do so,
-# subject to the following conditions:
-
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
module Transitions
class StateTransition
attr_reader :from, :to, :options
def initialize(opts)
@@ -31,21 +9,10 @@
def executable?(obj, *args)
[@guard].flatten.all? { |g| perform_guard(obj, g, *args) }
end
- def perform_guard(obj, guard, *args)
- case guard
- when Symbol, String
- obj.send(guard, *args)
- when Proc
- guard.call(obj, *args)
- else
- true
- end
- end
-
def execute(obj, *args)
case @on_transition
when Symbol, String
obj.send(@on_transition, *args)
when Proc
@@ -66,8 +33,20 @@
@from == obj.from && @to == obj.to
end
def from?(value)
@from == value
+ end
+
+ private
+
+ def perform_guard(obj, guard, *args)
+ if guard.respond_to?(:call)
+ guard.call(obj, *args)
+ elsif guard.is_a?(Symbol) || guard.is_a?(String)
+ obj.send(guard, *args)
+ else
+ true
+ end
end
end
end