state_machine

https://github.com/pluginaweek/state_machine

Ruby

Adds support for creating state machines for attributes on any Ruby class

StateMachine::Branch#matches?

Determines whether the given object / query matches the requirements
configured for this branch.  In addition to matching the event, from state,
and to state, this will also check whether the configured :if/:unless
conditions pass on the given object.

== Examples

  branch = StateMachine::Branch.new(:parked => :idling, :on => :ignite)
  
  # Successful
  branch.matches?(object, :on => :ignite)                                   # => true
  branch.matches?(object, :from => nil)                                     # => true
  branch.matches?(object, :from => :parked)                                 # => true
  branch.matches?(object, :to => :idling)                                   # => true
  branch.matches?(object, :from => :parked, :to => :idling)                 # => true
  branch.matches?(object, :on => :ignite, :from => :parked, :to => :idling) # => true
  
  # Unsuccessful
  branch.matches?(object, :on => :park)                                     # => false
  branch.matches?(object, :from => :idling)                                 # => false
  branch.matches?(object, :to => :first_gear)                               # => false
  branch.matches?(object, :from => :parked, :to => :first_gear)             # => false
  branch.matches?(object, :on => :park, :from => :parked, :to => :idling)   # => false

Source | Google | Stack overflow

Edit

git clone [email protected]:pluginaweek/state_machine.git

cd state_machine

open lib/state_machine/branch.rb

Contribute

# Make a new branch

git checkout -b -your-name--update-docs-StateMachine--Branch-matches--for-pr


# Commit to git

git add lib/state_machine/branch.rbgit commit -m "better docs for StateMachine::Branch#matches?"


# Open pull request

gem install hub # on a mac you can `brew install hub`

hub fork

git push <your name> -your-name--update-docs-StateMachine--Branch-matches--for-pr

hub pull-request


# Celebrate!