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