Sha256: 2935a715ae51b1ab8ba97c81daa0ac801604569a20fe7cf075cf2b135fd67f19

Contents?: true

Size: 1.46 KB

Versions: 11

Compression:

Stored size: 1.46 KB

Contents

module EnumStateMachine
  # Provides a set of helper methods for generating matchers
  module MatcherHelpers
    # Represents a state that matches all known states in a machine.
    # 
    # == Examples
    # 
    #   class Vehicle
    #     state_machine do
    #       before_transition any => :parked, :do => lambda {...}
    #       before_transition all - :parked => all - :idling, :do => lambda {}
    #       
    #       event :park
    #         transition all => :parked
    #       end
    #       
    #       event :crash
    #         transition all - :parked => :stalled
    #       end
    #     end
    #   end
    # 
    # In the above example, +all+ will match the following states since they
    # are known:
    # * +parked+
    # * +stalled+
    # * +idling+
    def all
      AllMatcher.instance
    end
    alias_method :any, :all
    
    # Represents a state that matches the original +from+ state.  This is useful
    # for defining transitions which are loopbacks.
    # 
    # == Examples
    # 
    #   class Vehicle
    #     state_machine do
    #       event :ignite
    #         transition [:idling, :first_gear] => same
    #       end
    #     end
    #   end
    # 
    # In the above example, +same+ will match whichever the from state is.  In
    # the case of the +ignite+ event, it is essential the same as the following:
    # 
    #   transition :parked => :parked, :first_gear => :first_gear
    def same
      LoopbackMatcher.instance
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
enum_state_machine-0.8.0 lib/enum_state_machine/matcher_helpers.rb
enum_state_machine-0.7.0 lib/enum_state_machine/matcher_helpers.rb
enum_state_machine-0.6.0 lib/enum_state_machine/matcher_helpers.rb
enum_state_machine-0.5.0 lib/enum_state_machine/matcher_helpers.rb
enum_state_machine-0.4.1 lib/enum_state_machine/matcher_helpers.rb
enum_state_machine-0.4.0 lib/enum_state_machine/matcher_helpers.rb
enum_state_machine-0.3.0 lib/enum_state_machine/matcher_helpers.rb
enum_state_machine-0.2.0 lib/enum_state_machine/matcher_helpers.rb
enum_state_machine-0.1.1 lib/enum_state_machine/matcher_helpers.rb
enum_state_machine-0.1.0 lib/enum_state_machine/matcher_helpers.rb
enum_state_machine-0.0.1 lib/enum_state_machine/matcher_helpers.rb