Created
July 29, 2009 03:35
-
-
Save davidlee/157859 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class NeuWizard | |
include StateFu | |
machine( :status ) do | |
state :info, | |
:tmp => 'page_1', | |
:first => true do | |
event :forward, :to => :betreuer | |
end | |
state :betreuer, | |
:tmp => 'page_2' do | |
event :prev, :to => :info | |
event :forward, :to => :misc | |
end | |
state :misc, | |
:tmp => 'page3', | |
:last => true do | |
event :prev, :to => :betreuer | |
end | |
end | |
end | |
>> w = NeuWizard.new | |
>> w.status.events.names | |
=> [:forward] | |
>> fwd = w.status.events[:forward] | |
=> #<StateFu::Event:0x122b1a8 @targets=[#<StateFu::State::9523590 @name=:betreuer>, #<StateFu::State::9518790 @name=:misc>], hooks{:after=>[], :execute=>[], :before=>[]}, machine#<StateFu::Machine #9533030 states=[:info, :betreuer, :misc] events=[:forward, :prev] options={}, @origins=[#<StateFu::State::9526450 @name=:info>, #<StateFu::State::9523590 @name=:betreuer>], requirements[], options{}, name:forward] | |
>> fwd.targets.names | |
=> [:betreuer, :misc] | |
# this is equivalent to w.status.transition [:forward, :betreuer] | |
# returns a transition which can be fired with .fire! | |
>> trans = w.status.forward :betreuer | |
=> #<StateFu::Transition:0x11e27dc @target=#<StateFu::State::9463380 @name=:betreuer>, errors[], args[], origin#<StateFu::State::9466240 @name=:info>, event#<StateFu::Event:0x120db44 @targets=[#<StateFu::State::9463380 @name=:betreuer>, #<StateFu::State::9458580 @name=:misc>], hooks{:after=>[], :execute=>[], :before=>[]}, machine#<StateFu::Machine #9472820 states=[:info, :betreuer, :misc] events=[:forward, :prev] options={}, @origins=[#<StateFu::State::9466240 @name=:info>, #<StateFu::State::9463380 @name=:betreuer>], requirements[], options{}, name:forward, machine#<StateFu::Machine #9472820 states=[:info, :betreuer, :misc] events=[:forward, :prev] options={}, @binding=|<= StateFu::Binding current_state=:info object_type=NeuWizard method_name=:status field_name=:status_field machine=#<StateFu::Machine #9472820 states=[:info, :betreuer, :misc] events=[:forward, :prev] options={}> =>, object#<NeuWizard:0x1205f34 @status_field="info", @_state_fu={:status=> StateFu::Binding current_state:info object_typeNeuWizard method_name:status field_name:status_field machine#<StateFu::Machine #9472820 states=[:info, :betreuer, :misc] events=[:forward, :prev] options={} =|}, @testing=nil, @options={}> | |
>> w.status.forward! :betreuer | |
=> #<StateFu::Transition:0x11c7aa4 @current_hook=nil, @target=#<StateFu::State::9463380 @name=:betreuer>, errors[], args[], current_hook_slotnil, origin#<StateFu::State::9466240 @name=:info>, event#<StateFu::Event:0x120db44 @targets=[#<StateFu::State::9463380 @name=:betreuer>, #<StateFu::State::9458580 @name=:misc>], hooks{:after=>[], :execute=>[], :before=>[]}, machine#<StateFu::Machine #9472820 states=[:info, :betreuer, :misc] events=[:forward, :prev] options={}, @origins=[#<StateFu::State::9466240 @name=:info>, #<StateFu::State::9463380 @name=:betreuer>], requirements[], options{}, name:forward, machine#<StateFu::Machine #9472820 states=[:info, :betreuer, :misc] events=[:forward, :prev] options={}, @binding=|<= StateFu::Binding current_state=:betreuer object_type=NeuWizard method_name=:status field_name=:status_field machine=#<StateFu::Machine #9472820 states=[:info, :betreuer, :misc] events=[:forward, :prev] options={}> =>, acceptedtrue, object#<NeuWizard:0x1205f34 @status_field="betreuer", @_state_fu={:status=> StateFu::Binding current_state:betreuer object_typeNeuWizard method_name:status field_name:status_field machine#<StateFu::Machine #9472820 states=[:info, :betreuer, :misc] events=[:forward, :prev] options={} =|}, @fired=true, @testing=nil, @options={}> | |
>> w.status.name | |
=> :betreuer |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment