state_machine
https://github.com/pluginaweek/state_machine
Ruby
Adds support for creating state machines for attributes on any Ruby class
StateMachine::Branch#match
Attempts to match the given object / query against the set of 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.
If a match is found, then the event/state requirements that the query
passed successfully will be returned. Otherwise, nil is returned if there
was no match.
Query options:
* <tt>:from</tt> - One or more states being transitioned from. If none
are specified, then this will always match.
* <tt>:to</tt> - One or more states being transitioned to. If none are
specified, then this will always match.
* <tt>:on</tt> - One or more events that fired the transition. If none
are specified, then this will always match.
* <tt>:guard</tt> - Whether to guard matches with the if/unless
conditionals defined for this branch. Default is true.
== Examples
branch = StateMachine::Branch.new(:parked => :idling, :on => :ignite)
branch.match(object, :on => :ignite) # => {:to => ..., :from => ..., :on => ...}
branch.match(object, :on => :park) # => nilEdit
git clone [email protected]:pluginaweek/state_machine.git
cd state_machine
open lib/state_machine/branch.rb
Contribute
# Make a new branchgit checkout -b -your-name--update-docs-StateMachine--Branch-match-for-pr
# Commit to gitgit add lib/state_machine/branch.rbgit commit -m "better docs for StateMachine::Branch#match"
# Open pull requestgem install hub # on a mac you can `brew install hub`
hub fork
git push <your name> -your-name--update-docs-StateMachine--Branch-match-for-pr
hub pull-request
# Celebrate!