bstard 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +8 -8
- data/lib/bstard/fsm.rb +4 -4
- data/lib/bstard/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MDViNjIxNWEzZjM2N2RkZjM4ODRkZjljODgxNmI2ODlkZjVjMmM1MA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MTkwYzViNzdlNmUwYWIyODEwODkyNTI5ZDY3ZTJkMmFmYzAyMTQxMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NjViYjlmNTFmMjJjMTY0YzI5MGQzMDUxMjdjNzQ2NTc1MTczZWNiMjNlNjY4
|
10
|
+
ZDljODk0ZTUwODRmNDIzNGUyZWY3YWZlMGJlNGI0Y2U1ODMzYjJiN2JkMjUy
|
11
|
+
NTI1NWQ5MjExYmNiZWE5NzEzODhkZTg5NzFmNWZjMWE5Yjk3Njc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NDk4MmMxNDg5NjMwZjRhOTYzYWJmMjI1NDA2MmI5MjcxZmQ2ZWJmNzI5MGM1
|
14
|
+
NmY4YmRkNzkyNjY1NmExMWI1MGFhZjRmMDIwYjU3Y2FiNzk2OGMwMDk3MTc0
|
15
|
+
YjM0NGJiYTEwMTY1M2RhNTExMGQ3NmI5MDhiOWQyNTk0MTA4NGQ=
|
data/README.md
CHANGED
@@ -32,7 +32,7 @@ Use `Bstard.define` to describe your state machine
|
|
32
32
|
|
33
33
|
This defines a state machine that:
|
34
34
|
|
35
|
-
- has __new__ __submitted__ and __deleted__ states
|
35
|
+
- has __new__, __submitted__ and __deleted__ states
|
36
36
|
- responds to _submit_ and _delete_ events
|
37
37
|
- has an initial state of __new__
|
38
38
|
- transitions from __new__ to __submitted__ when triggered by the _submit_ event
|
@@ -95,7 +95,7 @@ Event callbacks are configured with `on`
|
|
95
95
|
``` ruby
|
96
96
|
machine = Bstard.define do |fsm|
|
97
97
|
# ...
|
98
|
-
fsm.on :submit do |
|
98
|
+
fsm.on :submit do |event, state, next_state|
|
99
99
|
# code that needs to be run when :submit is triggered
|
100
100
|
end
|
101
101
|
end
|
@@ -106,7 +106,7 @@ State change callbacks are configured with `when`
|
|
106
106
|
``` ruby
|
107
107
|
machine = Bstard.define do |fsm|
|
108
108
|
# ...
|
109
|
-
fsm.when :submitted do |previous_state|
|
109
|
+
fsm.when :submitted do |event, previous_state, state|
|
110
110
|
# code that needs to run when state changes to :submitted
|
111
111
|
end
|
112
112
|
end
|
@@ -117,10 +117,10 @@ Use the symbol `:any` for event or state change callbacks that should by run whe
|
|
117
117
|
``` ruby
|
118
118
|
machine = Bstard.define do |fsm|
|
119
119
|
# ...
|
120
|
-
fsm.on :any do |
|
120
|
+
fsm.on :any do |event, state, next_state|
|
121
121
|
# code that will run when any event is triggered
|
122
122
|
end
|
123
|
-
fsm.when :any do |previous_state|
|
123
|
+
fsm.when :any do |event, previous_state, state|
|
124
124
|
# code that will run when after any state change
|
125
125
|
end
|
126
126
|
end
|
@@ -141,8 +141,8 @@ private
|
|
141
141
|
fsm.initial status
|
142
142
|
fsm.event :save, :new => :draft
|
143
143
|
fsm.event :approve, :draft => :approved
|
144
|
-
fsm.when :any do |prev_state|
|
145
|
-
status =
|
144
|
+
fsm.when :any do |event, prev_state, new_state|
|
145
|
+
status = new_state
|
146
146
|
end
|
147
147
|
end
|
148
148
|
end
|
@@ -162,7 +162,7 @@ To run the tests, run `bundle exec rake test`.
|
|
162
162
|
|
163
163
|
## Contributing
|
164
164
|
|
165
|
-
1. Fork it ( https://github.com/
|
165
|
+
1. Fork it ( https://github.com/tonyheadford/bstard/fork )
|
166
166
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
167
167
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
168
168
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/lib/bstard/fsm.rb
CHANGED
@@ -59,12 +59,12 @@ class Bstard::Fsm
|
|
59
59
|
transitions = @events[evt]
|
60
60
|
raise Bstard::InvalidEvent.new("Unknown event <#{evt.to_s}>") if transitions.nil?
|
61
61
|
new_state = transitions[current_state]
|
62
|
-
raise Bstard::InvalidTransition.new("Cannot <#{evt.to_s}> from [#{current_state.to_s}]") if new_state.nil?
|
63
|
-
@event_callbacks.fetch(evt.to_sym, []).concat(@event_callbacks.fetch(:any, [])).each { |c| c.call(current_state) }
|
64
62
|
old_state = current_state
|
63
|
+
raise Bstard::InvalidTransition.new("Cannot <#{evt.to_s}> from [#{current_state.to_s}]") if new_state.nil?
|
64
|
+
@event_callbacks.fetch(evt.to_sym, []).concat(@event_callbacks.fetch(:any, [])).each { |c| c.call(evt, old_state, new_state) }
|
65
65
|
@current_state = new_state
|
66
|
-
@state_callbacks.fetch(current_state, []).concat(@state_callbacks.fetch(:any, [])).each { |c| c.call(old_state) }
|
67
|
-
|
66
|
+
@state_callbacks.fetch(current_state, []).concat(@state_callbacks.fetch(:any, [])).each { |c| c.call(evt, old_state, new_state) }
|
67
|
+
new_state
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
data/lib/bstard/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bstard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Headford
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|