MINT-statemachine 1.3.2 → 1.4.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.
- data/CHANGES +6 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +4 -0
- data/LICENSE +1 -0
- data/MINT-statemachine.gemspec +3 -3
- data/Rakefile +4 -5
- data/lib/statemachine/parallelstate.rb +12 -5
- data/lib/statemachine/transition.rb +5 -0
- data/lib/statemachine/version.rb +2 -2
- data/spec/sm_parallel_state_spec.rb +9 -4
- metadata +4 -4
data/CHANGES
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
= Statemachine Changelog
|
2
2
|
|
3
|
+
== Version 1.4.0 (2013/07/02)
|
4
|
+
|
5
|
+
* Changed behavior: Entry into a parallel state that has been already entered before resets parallel state
|
6
|
+
contents to initial (no longer history by default for parallel states!).
|
7
|
+
* fixed requires and class names since new rake version has marked rdoc and package task class as depreciated.
|
8
|
+
|
3
9
|
== Version 1.3.2 (2013/02/28)
|
4
10
|
|
5
11
|
* Fixed bug with spontaneous transitions within parallel states.
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/LICENSE
CHANGED
data/MINT-statemachine.gemspec
CHANGED
@@ -2,18 +2,18 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "MINT-statemachine"
|
5
|
-
s.version = "1.
|
5
|
+
s.version = "1.4.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Sebastian Feuerstack"]
|
9
|
-
s.date = "2013-02
|
9
|
+
s.date = "2013-07-02"
|
10
10
|
s.description = "The MINT Statemachine is a ruby library for building Finite State Machines, based on the Statemachine gem by Micah Martin."
|
11
11
|
s.email = "Sebastian@Feuerstack.org"
|
12
12
|
s.files = ["TODO", "Gemfile.lock", "LICENSE", "CHANGES", "Rakefile", "Gemfile", "README.rdoc", "MINT-statemachine.gemspec", "lib/statemachine.rb", "lib/statemachine/builder.rb", "lib/statemachine/statemachine.rb", "lib/statemachine/generate/util.rb", "lib/statemachine/generate/dot_graph/dot_graph_statemachine.rb", "lib/statemachine/generate/java/java_statemachine.rb", "lib/statemachine/generate/dot_graph.rb", "lib/statemachine/generate/src_builder.rb", "lib/statemachine/generate/java.rb", "lib/statemachine/transition.rb", "lib/statemachine/version.rb", "lib/statemachine/parallelstate.rb", "lib/statemachine/action_invokation.rb", "lib/statemachine/superstate.rb", "lib/statemachine/state.rb", "lib/statemachine/stub_context.rb", "spec/default_transition_spec.rb", "spec/spec_helper.rb", "spec/sm_super_state_spec.rb", "spec/sm_action_parameterization_spec.rb", "spec/generate/dot_graph/dot_graph_stagemachine_spec.rb", "spec/generate/java/java_statemachine_spec.rb", "spec/sm_entry_exit_actions_spec.rb", "spec/sm_simple_spec.rb", "spec/sm_parallel_state_spec.rb", "spec/transition_spec.rb", "spec/noodle.rb", "spec/sm_activation_spec.rb", "spec/builder_spec.rb", "spec/action_invokation_spec.rb", "spec/sm_turnstile_spec.rb", "spec/history_spec.rb", "spec/sm_odds_n_ends_spec.rb"]
|
13
13
|
s.homepage = "http://www.multi-access.de"
|
14
14
|
s.require_paths = ["lib"]
|
15
15
|
s.rubygems_version = "1.8.15"
|
16
|
-
s.summary = "MINT-Statemachine-1.
|
16
|
+
s.summary = "MINT-Statemachine-1.4.0 - Statemachine Library for Ruby based on statemachine from http://slagyr.github.com/statemachine http://www.multi-access.de/open-source-software/third-party-software-extensions/"
|
17
17
|
s.test_files = ["spec/default_transition_spec.rb", "spec/sm_super_state_spec.rb", "spec/sm_action_parameterization_spec.rb", "spec/sm_entry_exit_actions_spec.rb", "spec/sm_simple_spec.rb", "spec/sm_parallel_state_spec.rb", "spec/transition_spec.rb", "spec/sm_activation_spec.rb", "spec/builder_spec.rb", "spec/action_invokation_spec.rb", "spec/sm_turnstile_spec.rb", "spec/history_spec.rb", "spec/sm_odds_n_ends_spec.rb"]
|
18
18
|
|
19
19
|
if s.respond_to? :specification_version then
|
data/Rakefile
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
$:.unshift('lib')
|
2
2
|
require 'rubygems'
|
3
|
-
require '
|
3
|
+
require 'rubygems/package_task'
|
4
4
|
require 'rake/clean'
|
5
|
-
require '
|
5
|
+
require 'rdoc/task'
|
6
6
|
require 'spec/rake/spectask'
|
7
7
|
require 'statemachine'
|
8
8
|
|
@@ -24,7 +24,7 @@ Spec::Rake::SpecTask.new do |t|
|
|
24
24
|
end
|
25
25
|
|
26
26
|
desc 'Generate RDoc'
|
27
|
-
rd =
|
27
|
+
rd = RDoc::Task.new do |rdoc|
|
28
28
|
rdoc.options << '--title' << 'Statemachine' << '--line-numbers' << '--inline-source' << '--main' << 'README.rdoc'
|
29
29
|
rdoc.rdoc_files.include('README.rdoc', 'CHANGES', 'lib/**/*.rb')
|
30
30
|
end
|
@@ -43,8 +43,7 @@ spec = Gem::Specification.new do |s|
|
|
43
43
|
s.email = "Sebastian@Feuerstack.org"
|
44
44
|
s.homepage = "http://www.multi-access.de"
|
45
45
|
end
|
46
|
-
|
47
|
-
Rake::GemPackageTask.new(spec) do |pkg|
|
46
|
+
Gem::PackageTask.new(spec) do |pkg|
|
48
47
|
pkg.need_zip = true
|
49
48
|
pkg.need_tar = true
|
50
49
|
end
|
@@ -196,8 +196,8 @@ module Statemachine
|
|
196
196
|
end
|
197
197
|
|
198
198
|
def spontaneous_transition
|
199
|
-
|
200
|
-
|
199
|
+
nil
|
200
|
+
end
|
201
201
|
|
202
202
|
|
203
203
|
def exit(args)
|
@@ -213,10 +213,17 @@ module Statemachine
|
|
213
213
|
@parallel_statemachines.each_with_index do |s,i|
|
214
214
|
as = s.get_state(s.state)
|
215
215
|
while as and as != self do
|
216
|
-
|
217
|
-
|
218
|
-
|
216
|
+
as.exit(args)
|
217
|
+
as = as.superstate
|
218
|
+
end
|
219
|
+
|
220
|
+
end
|
221
|
+
end
|
219
222
|
|
223
|
+
# explicit reset on parallel state entry
|
224
|
+
def reset
|
225
|
+
@parallel_statemachines.each_with_index do |s,i|
|
226
|
+
s.reset(@startstate_ids[i])
|
220
227
|
end
|
221
228
|
end
|
222
229
|
|
@@ -43,6 +43,11 @@ module Statemachine
|
|
43
43
|
#entries.each { |entered_state| entered_state.activate(terminal_state.id) if entered_state.is_parallel }
|
44
44
|
statemachine.state = terminal_state if statemachine.has_state(terminal_state.id) and statemachine.is_parallel
|
45
45
|
|
46
|
+
# on transition to parallel state, all nested parallel runnign states are reseted -> no histoy TODO implement history
|
47
|
+
if terminal_state.is_parallel
|
48
|
+
terminal_state.reset
|
49
|
+
end
|
50
|
+
|
46
51
|
if is_self_transition? # handle special case of self transition
|
47
52
|
new_states = [@destination_id]
|
48
53
|
else
|
data/lib/statemachine/version.rb
CHANGED
@@ -9,7 +9,8 @@ describe "Parallel states" do
|
|
9
9
|
|
10
10
|
@sm = Statemachine.build do
|
11
11
|
trans :start,:go,:p
|
12
|
-
|
12
|
+
# state :maintenance
|
13
|
+
trans :maintenance,:go,:p
|
13
14
|
|
14
15
|
parallel :p do
|
15
16
|
event :activate_exit, :maintain
|
@@ -123,10 +124,14 @@ describe "Parallel states" do
|
|
123
124
|
@noodle2.cooked.should equal(true)
|
124
125
|
end
|
125
126
|
|
126
|
-
it "should support state recovery" do
|
127
|
-
@sm.states=[:locked,:
|
127
|
+
it "should support state recovery to initial state if without history state" do
|
128
|
+
@sm.states=[:locked,:on]
|
128
129
|
@sm.toggle
|
129
|
-
|
130
|
+
@sm.states_id.should == [:locked,:off]
|
131
|
+
@sm.maintain
|
132
|
+
@sm.states_id.should == [:maintenance]
|
133
|
+
@sm.go
|
134
|
+
@sm.states_id.should == [:locked,:on]
|
130
135
|
end
|
131
136
|
|
132
137
|
it "should support parallel states inside superstates" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: MINT-statemachine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02
|
12
|
+
date: 2013-07-02 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: The MINT Statemachine is a ruby library for building Finite State Machines,
|
15
15
|
based on the Statemachine gem by Micah Martin.
|
@@ -73,7 +73,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
73
73
|
version: '0'
|
74
74
|
segments:
|
75
75
|
- 0
|
76
|
-
hash:
|
76
|
+
hash: 725809469
|
77
77
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
78
|
none: false
|
79
79
|
requirements:
|
@@ -85,7 +85,7 @@ rubyforge_project:
|
|
85
85
|
rubygems_version: 1.8.15
|
86
86
|
signing_key:
|
87
87
|
specification_version: 3
|
88
|
-
summary: MINT-Statemachine-1.
|
88
|
+
summary: MINT-Statemachine-1.4.0 - Statemachine Library for Ruby based on statemachine
|
89
89
|
from http://slagyr.github.com/statemachine http://www.multi-access.de/open-source-software/third-party-software-extensions/
|
90
90
|
test_files:
|
91
91
|
- spec/default_transition_spec.rb
|