statemachine 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,7 +11,7 @@ module Statemachine
11
11
  # trans :unlocked, :pass, :locked, :lock
12
12
  # end
13
13
  #
14
- # An optional statemachine paramter may be passed in to modify
14
+ # An optional statemachine parameter may be passed in to modify
15
15
  # an existing statemachine instance.
16
16
  #
17
17
  # Actions:
@@ -57,12 +57,13 @@ module Statemachine
57
57
  module StateBuilding
58
58
  attr_reader :subject
59
59
 
60
- # Declares that the state responds to the spcified event.
61
- # The +event+ paramter should be a Symbol.
60
+ # Declares that the state responds to the specified event.
61
+ # The +event+ parameter should be a Symbol.
62
62
  # The +destination_id+, which should also be a Symbol, is the id of the state
63
63
  # that will event will transition into.
64
64
  #
65
- # The 3rd +action+ paramter is optional
65
+ # The 3rd +action+ parameter is optional. Note that the action runs *before*
66
+ # the transition to the state specified in the 2nd parameter.
66
67
  #
67
68
  # sm = Statemachine.build do
68
69
  # state :locked do
@@ -277,4 +278,4 @@ module Statemachine
277
278
  end
278
279
  end
279
280
 
280
- end
281
+ end
@@ -33,6 +33,11 @@ module Statemachine
33
33
  # is responsible for all the behavior.
34
34
  attr_accessor :context
35
35
 
36
+ # A statemachine can be named. This is most useful when a program is running
37
+ # multiple machines with a tracer. The name is prepended to the tracer notices
38
+ # so that they can be matched to the correct statemachine.
39
+ attr_accessor :name
40
+
36
41
  attr_reader :root #:nodoc:
37
42
 
38
43
  # Should not be called directly. Instances of Statemachine::Statemachine are created
@@ -97,7 +102,10 @@ module Statemachine
97
102
  end
98
103
 
99
104
  def trace(message) #:nodoc:
100
- @tracer.puts message if @tracer
105
+ if @tracer
106
+ prefix = @name ? "(#{@name}) " : ""
107
+ @tracer.puts("#{prefix}#{message}")
108
+ end
101
109
  end
102
110
 
103
111
  def get_state(id) #:nodoc:
@@ -2,8 +2,8 @@ module Statemachine
2
2
  module VERSION #:nodoc:
3
3
  unless defined? MAJOR
4
4
  MAJOR = 1
5
- MINOR = 1
6
- TINY = 1
5
+ MINOR = 2
6
+ TINY = 0
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY].join('.')
9
9
  TAG = "REL_" + [MAJOR, MINOR, TINY].join('_')
@@ -61,6 +61,41 @@ describe "State Machine Odds And Ends" do
61
61
  @sm.state.should equal(:stuck)
62
62
  end
63
63
 
64
+ it "traces output with name" do
65
+ io = StringIO.new
66
+ @sm.name = "Switch"
67
+ @sm.tracer = io
68
+ @sm.toggle
69
+ @sm.toggle
70
+
71
+ expected = StringIO.new
72
+ expected.puts "(Switch) Event: toggle"
73
+ expected.puts "(Switch) \texiting 'off' state"
74
+ expected.puts "(Switch) \tentering 'on' state"
75
+ expected.puts "(Switch) Event: toggle"
76
+ expected.puts "(Switch) \texiting 'on' state"
77
+ expected.puts "(Switch) \tentering 'off' state"
78
+
79
+ io.string.should == expected.string
80
+ end
81
+
82
+ it "traces output without name" do
83
+ io = StringIO.new
84
+ @sm.tracer = io
85
+ @sm.toggle
86
+ @sm.toggle
87
+
88
+ expected = StringIO.new
89
+ expected.puts "Event: toggle"
90
+ expected.puts "\texiting 'off' state"
91
+ expected.puts "\tentering 'on' state"
92
+ expected.puts "Event: toggle"
93
+ expected.puts "\texiting 'on' state"
94
+ expected.puts "\tentering 'off' state"
95
+
96
+ io.string.should == expected.string
97
+ end
98
+
64
99
  end
65
100
 
66
101
 
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 1
7
- - 1
8
- - 1
9
- version: 1.1.1
7
+ - 2
8
+ - 0
9
+ version: 1.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Micah Martin
@@ -14,7 +14,7 @@ autorequire: statemachine
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-09-29 00:00:00 -05:00
17
+ date: 2011-06-17 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -90,7 +90,7 @@ rubyforge_project: statemachine
90
90
  rubygems_version: 1.3.6
91
91
  signing_key:
92
92
  specification_version: 3
93
- summary: Statemachine-1.1.1 - Statemachine Library for Ruby http://slagyr.github.com/statemachine
93
+ summary: Statemachine-1.2.0 - Statemachine Library for Ruby http://slagyr.github.com/statemachine
94
94
  test_files:
95
95
  - spec/action_invokation_spec.rb
96
96
  - spec/builder_spec.rb