Module: StateMachine::MatcherHelpers

Included in:
Event, Integrations::DataMapper::Observer, Machine
Defined in:
lib/state_machine/matcher_helpers.rb

Overview

Provides a set of helper methods for generating matchers

Instance Method Summary collapse

Instance Method Details

#allObject Also known as: any

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


28
29
30
# File 'lib/state_machine/matcher_helpers.rb', line 28

def all
  AllMatcher.instance
end

#sameObject

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

50
51
52
# File 'lib/state_machine/matcher_helpers.rb', line 50

def same
  LoopbackMatcher.instance
end