Stateology is an implementation of the State Pattern using the Mixology C extension. Stateology follows closely the LSL State Pattern implementation and can support a similar syntax.

The following features are supported:

Dynamic switching between states (mixing and unmixing modules)

Optional state_entry() and state_exit() hooks for each state (automatically called upon state entry and exit)

Support for nested states

States are cleanly inherited by subclasses

NO MAGIC! Stateology does not use any behind-the-scenes method aliasing nor does it make use of any hooks.

Use as in the following:

class Sample include Stateology state(:Happy) { def state_entry puts "entering Happy state" end def do_something puts "Pets a puppy" end def state_exit puts "exiting Happy state" end } state(:Angry) { def state_entry puts "entering Angry state" end def do_something puts "Kicks a puppy" end def state_exit puts "exiting Angry state" end } end s = Sample.new # switch to Happy state s.state :Happy # (automatic call to state_entry) => "entering Happy state" s.do_something #=> "Pets a puppy" # now switch to Angry state s.state :Angry # (automatic call to state_exit) => "exiting Happy state" # (automatic call to state_entry) => "entering Angry state" s.do_something #=> "Kicks a puppy" # now switch back to no state s.state nil # (automatic call to state_exit) => "exiting Angry state"

Download and Gem

You can download Stateology here: http://github.com/banister/state-ology/tree/master

Or install the Gem: sudo gem install stateology

Share this: Twitter

Facebook

Reddit

Like this: Like Loading... Related