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