hifsm 0.4.3 → 0.4.5
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.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/hifsm/fsm.rb +6 -1
- data/lib/hifsm/machine.rb +1 -1
- data/lib/hifsm/state.rb +3 -3
- data/lib/hifsm/version.rb +1 -1
- data/test/monster.rb +1 -0
- data/test/test_before_returning_false.rb +36 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58e6687ae4f9842846c1053888058f2a900472a2
|
4
|
+
data.tar.gz: b8bd4da00022fca41f541224b09a717189395d58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01b20d9770b5a2623ed3af913de677b28e3de8110580d20781ed601d4d42c8a70ec7178d44c6050a9889cf709fd8737b0f27a234ffaa0aa413f624b58cf03ee8
|
7
|
+
data.tar.gz: 455a85c0392c5e64038f62e8b5025a282ba9657b1b0dec9f082a7e41b1ed2c685c94429ea4ed42d4f258e544f109cac954cc508f8fd52aa6b474af43643d8c47
|
data/README.md
CHANGED
data/lib/hifsm/fsm.rb
CHANGED
@@ -2,8 +2,9 @@ module Hifsm
|
|
2
2
|
|
3
3
|
# This class holds immutable state machine definition
|
4
4
|
class FSM
|
5
|
-
attr_reader :name, :
|
5
|
+
attr_reader :name, :transitions
|
6
6
|
|
7
|
+
# public API
|
7
8
|
def initialize(name = :state, parent = nil, &block)
|
8
9
|
@name = name
|
9
10
|
@parent = parent
|
@@ -26,6 +27,10 @@ module Hifsm
|
|
26
27
|
@machine_class.new(self, target, initial_state)
|
27
28
|
end
|
28
29
|
|
30
|
+
def states
|
31
|
+
@states.keys
|
32
|
+
end
|
33
|
+
|
29
34
|
#DSL
|
30
35
|
def event(name, options = {}, &block)
|
31
36
|
Hifsm::DSL::EventBuilder.new(options, &block).each do |ev_def|
|
data/lib/hifsm/machine.rb
CHANGED
data/lib/hifsm/state.rb
CHANGED
@@ -55,9 +55,9 @@ module Hifsm
|
|
55
55
|
if ev.guard?(target, *args)
|
56
56
|
from_state = self
|
57
57
|
to_state = ev.to
|
58
|
-
if ev.trigger(target, :before, *args) &&
|
59
|
-
to_state.trigger(target, :before_enter, *args) &&
|
60
|
-
from_state.trigger(target, :before_exit, *args)
|
58
|
+
if ev.trigger(target, :before, *args).all? &&
|
59
|
+
to_state.trigger(target, :before_enter, *args).all? &&
|
60
|
+
from_state.trigger(target, :before_exit, *args).all?
|
61
61
|
new_state_callback.call(to_state.enter!)
|
62
62
|
from_state.trigger(target, :after_exit, *args)
|
63
63
|
to_state.trigger(target, :after_enter, *args)
|
data/lib/hifsm/version.rb
CHANGED
data/test/monster.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'setup_tests'
|
2
|
+
|
3
|
+
class TestBeforeReturningFalse < Minitest::Test
|
4
|
+
class Door
|
5
|
+
include Hifsm
|
6
|
+
|
7
|
+
hifsm do
|
8
|
+
state :open
|
9
|
+
state :closed, :initial => true do
|
10
|
+
state :unlocked, :initial => true
|
11
|
+
state :locked
|
12
|
+
|
13
|
+
event :lock, :from => :unlocked, :to => :locked
|
14
|
+
end
|
15
|
+
|
16
|
+
event :open, :from => :closed, :to => :open do
|
17
|
+
before do
|
18
|
+
state != 'closed.locked'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
event :close, :from => :open, :to => :closed
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def setup
|
26
|
+
@door = Door.new
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_opening_locked_door_does_nothing
|
30
|
+
@door.lock
|
31
|
+
@door.open
|
32
|
+
assert_equal 'closed.locked', @door.state
|
33
|
+
# assert nothing raised
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hifsm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Meremyanin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- test/test_activerecord_adapter.rb
|
126
126
|
- test/test_any_state_event.rb
|
127
127
|
- test/test_basic_fsm.rb
|
128
|
+
- test/test_before_returning_false.rb
|
128
129
|
- test/test_dynamic_initial_state.rb
|
129
130
|
- test/test_event_guard.rb
|
130
131
|
- test/test_groupped_transitions.rb
|
@@ -164,6 +165,7 @@ test_files:
|
|
164
165
|
- test/test_activerecord_adapter.rb
|
165
166
|
- test/test_any_state_event.rb
|
166
167
|
- test/test_basic_fsm.rb
|
168
|
+
- test/test_before_returning_false.rb
|
167
169
|
- test/test_dynamic_initial_state.rb
|
168
170
|
- test/test_event_guard.rb
|
169
171
|
- test/test_groupped_transitions.rb
|