ruby-state-machine 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,87 @@
1
+ ## Ruby State Machine
2
+ Ruby State Machine (ruby-state-machine) is a full-featured state machine gem for use within ruby. It can also be used in Rails. This was written because we required a state machine that allowed different actions to be performed based on the previous and current events, as well as injecting logic (a "decider") to determine the next event.
3
+
4
+ ## Installation:
5
+
6
+ Add this line to your application's Gemfile:
7
+
8
+ gem 'ruby-state-machine'
9
+
10
+ And then execute:
11
+
12
+ $ bundle
13
+
14
+ Or install it yourself as:
15
+
16
+ $ gem install ruby-state-machine
17
+
18
+ ## Location:
19
+ Here: http://github.com/tangledpath/ruby-state-machine
20
+
21
+ RDocs: http://ruby-state-mach.rubyforge.org/
22
+
23
+
24
+ ## USAGE:
25
+
26
+ ```ruby
27
+ require 'ruby-state-machine/state_machine'
28
+
29
+ # Note, a state machine is not created directly; instead, the behavior of a state
30
+ # machine is added through a mixin, e.g.:
31
+ class SampleMachine
32
+ include StateMachine
33
+ state_machine :states => [:a_state, :b_state, :c_state, :d_state], :events => [:w_event, :x_event, :y_event, :z_event]
34
+ state_transition :state=>:a_state, :event=>:x_event, :next=>:c_state # Define next state for :a_state when :x_event is sent
35
+ state_transition :state=>:a_state, :event=>:y_event, :next=>:a_state # Define next state for :a_state when :y_event is sent
36
+ state_transition :state=>:a_state, :event=>:z_event, :next=>:b_state # ...
37
+
38
+ state_transition :state=>:b_state, :event=>:w_event, :next=>:b_state
39
+ state_transition :state=>:b_state, :event=>:y_event, :next=>:c_state
40
+ state_transition :state=>:b_state, :event=>:z_event, :next=>:a_state
41
+
42
+ state_transition :state=>:c_state, :event=>:x_event, :next=>:b_state
43
+ end
44
+ ```
45
+
46
+ sm = SampleMachine.new
47
+ puts sm.current_state # :a_state
48
+ sm.send_event(:x_event)
49
+ puts sm.current_state # :c_state
50
+ ```
51
+
52
+ For examples of other functionality, including branching, deciders, lambdas, etc, see http://ruby-state-mach.rubyforge.org/StateMachine/ClassMethods.html#state_transition-instance_method.
53
+
54
+
55
+ ## CONTRIBUTE
56
+
57
+ 1. Fork it
58
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
59
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
60
+ 4. Push to the branch (`git push origin my-new-feature`)
61
+ 5. Create new Pull Request
62
+
63
+ ## LICENSE:
64
+
65
+ (The MIT License)
66
+
67
+ Copyright (c) 2007-2013 Steven Miers
68
+
69
+ Permission is hereby granted, free of charge, to any person obtaining
70
+ a copy of this software and associated documentation files (the
71
+ 'Software'), to deal in the Software without restriction, including
72
+ without limitation the rights to use, copy, modify, merge, publish,
73
+ distribute, sublicense, and/or sell copies of the Software, and to
74
+ permit persons to whom the Software is furnished to do so, subject to
75
+ the following conditions:
76
+
77
+ The above copyright notice and this permission notice shall be
78
+ included in all copies or substantial portions of the Software.
79
+
80
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
81
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
82
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
83
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
84
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
85
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
86
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
87
+
@@ -1,6 +1,6 @@
1
- $:.unshift(File.dirname(__FILE__)) unless
2
- $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
1
+ require "ruby-state-machine/version"
2
+ #require "ruby-state-machine/state_machine"
3
3
 
4
4
  module RubyStateMachine
5
- VERSION = '1.0.2'
5
+
6
6
  end
@@ -5,9 +5,12 @@ require 'ruby-state-machine/bounded_array'
5
5
  # an array of events, and one or more transition actions. A transition can be
6
6
  # as simple as the symbol for the next state, a lambda (code) to execute. Primitive
7
7
  # branching can also be achieved if necessary by using a "decider" instance method.
8
- # Please see StateMachine.state_transition for full details on the variations
9
- # available. StateMachineTest also contains examples and unit tests for most (if not all)
10
- # of the available functionality. See README for example.
8
+ #
9
+ # The {StateMachineTest} (view source) also contains examples and unit tests for most (if not all)
10
+ # of the available functionality.
11
+ # Also see {http://ruby-state-mach.rubyforge.org/ README} for examples
12
+ # @see ClassMethods#state_transition StateTransition for full details on the variations available.
13
+ # @see StateMachineTest
11
14
  module StateMachine
12
15
  def self.included(base)
13
16
  base.extend StateMachine::ClassMethods
@@ -0,0 +1,8 @@
1
+ module RubyStateMachine
2
+ module VERSION
3
+ MAJOR = 1
4
+ MINOR = 1
5
+ TINY = 0
6
+ STRING = [MAJOR, MINOR, TINY].join('.')
7
+ end
8
+ end
metadata CHANGED
@@ -1,114 +1,53 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby-state-machine
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 0
8
- - 2
9
- version: 1.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
12
- - stevenmiers
7
+ authors:
8
+ - tangledpath
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2010-05-18 00:00:00 -05:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: rubyforge
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 2
29
- - 0
30
- - 4
31
- version: 2.0.4
32
- type: :development
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: hoe
36
- prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 2
43
- - 6
44
- - 0
45
- version: 2.6.0
46
- type: :development
47
- version_requirements: *id002
48
- description: FIX (describe your package)
49
- email:
12
+ date: 2013-06-04 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: A ruby state machine
15
+ email:
50
16
  - steven.miers@gmail.com
51
17
  executables: []
52
-
53
18
  extensions: []
54
-
55
- extra_rdoc_files:
56
- - History.txt
57
- - Manifest.txt
58
- - PostInstall.txt
59
- - website/index.txt
60
- files:
61
- - History.txt
62
- - Manifest.txt
63
- - PostInstall.txt
64
- - README.rdoc
65
- - Rakefile
66
- - config/website.yml
67
- - lib/ruby-state-machine.rb
19
+ extra_rdoc_files:
20
+ - README.md
21
+ files:
68
22
  - lib/ruby-state-machine/bounded_array.rb
69
23
  - lib/ruby-state-machine/state_machine.rb
70
- - script/console
71
- - script/destroy
72
- - script/generate
73
- - script/txt2html
74
- - test/test_helper.rb
75
- - test/test_state_machine.rb
76
- - website/index.html
77
- - website/index.txt
78
- - website/javascripts/rounded_corners_lite.inc.js
79
- - website/stylesheets/screen.css
80
- - website/template.html.erb
81
- has_rdoc: true
82
- homepage: http://github.com/#{github_username}/#{project_name}
24
+ - lib/ruby-state-machine/version.rb
25
+ - lib/ruby-state-machine.rb
26
+ - README.md
27
+ homepage: http://github.com/tangledpath/ruby-state-machine
83
28
  licenses: []
84
-
85
- post_install_message: PostInstall.txt
86
- rdoc_options:
87
- - --main
88
- - README.rdoc
89
- require_paths:
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
90
32
  - lib
91
- required_ruby_version: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- segments:
96
- - 0
97
- version: "0"
98
- required_rubygems_version: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- segments:
103
- - 0
104
- version: "0"
33
+ - ext
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ required_rubygems_version: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
105
46
  requirements: []
106
-
107
- rubyforge_project: ruby-state-mach
108
- rubygems_version: 1.3.6
47
+ rubyforge_project: ruby-state-machine
48
+ rubygems_version: 1.8.25
109
49
  signing_key:
110
50
  specification_version: 3
111
- summary: FIX (describe your package)
112
- test_files:
113
- - test/test_helper.rb
114
- - test/test_state_machine.rb
51
+ summary: A full-featured state machine gem for use within ruby.
52
+ test_files: []
53
+ has_rdoc: true
data/History.txt DELETED
@@ -1,32 +0,0 @@
1
- == 0.0.1 2009-08-11
2
-
3
- * 1 major enhancement:
4
- * Initial release
5
-
6
- == 0.0.2 2009-08-11
7
-
8
- * 1 minor enhancement:
9
- * Docs
10
-
11
- == 0.0.3 2009-08-17
12
-
13
- * 1 minor enhancement:
14
- * Change ruby-state-mach -> ruby-state-machine
15
-
16
- == 0.0.4 2009-08-19
17
-
18
- * 1 minor enhancement:
19
- * Add missing files
20
-
21
- == 1.0.1 2010-05-03
22
-
23
- * 1 bug fix:
24
- * Fix initialize to call super when used on AR models.
25
-
26
- == 1.0.2 2010-05-18
27
-
28
- * 1 behavioral change:
29
- * No longer returns to default state upon InvalidStateException. This was making several unit tests more difficult than necessary.
30
-
31
-
32
-
data/Manifest.txt DELETED
@@ -1,20 +0,0 @@
1
- History.txt
2
- Manifest.txt
3
- PostInstall.txt
4
- README.rdoc
5
- Rakefile
6
- config/website.yml
7
- lib/ruby-state-machine.rb
8
- lib/ruby-state-machine/bounded_array.rb
9
- lib/ruby-state-machine/state_machine.rb
10
- script/console
11
- script/destroy
12
- script/generate
13
- script/txt2html
14
- test/test_helper.rb
15
- test/test_state_machine.rb
16
- website/index.html
17
- website/index.txt
18
- website/javascripts/rounded_corners_lite.inc.js
19
- website/stylesheets/screen.css
20
- website/template.html.erb
data/PostInstall.txt DELETED
@@ -1 +0,0 @@
1
- For more information on ruby-state-machine, see http://ruby-state-mach.rubyforge.org
data/README.rdoc DELETED
@@ -1,48 +0,0 @@
1
- = ruby-state-machine
2
-
3
- * http://github.com/#{github_username}/#{project_name}
4
-
5
- == DESCRIPTION:
6
-
7
- FIX (describe your package)
8
-
9
- == FEATURES/PROBLEMS:
10
-
11
- * FIX (list of features or problems)
12
-
13
- == SYNOPSIS:
14
-
15
- FIX (code sample of usage)
16
-
17
- == REQUIREMENTS:
18
-
19
- * None
20
-
21
- == INSTALL:
22
-
23
- * sudo gem install ruby-state-machine
24
-
25
- == LICENSE:
26
-
27
- (The MIT License)
28
-
29
- Copyright (c) 2007-2009 Steven Miers
30
-
31
- Permission is hereby granted, free of charge, to any person obtaining
32
- a copy of this software and associated documentation files (the
33
- 'Software'), to deal in the Software without restriction, including
34
- without limitation the rights to use, copy, modify, merge, publish,
35
- distribute, sublicense, and/or sell copies of the Software, and to
36
- permit persons to whom the Software is furnished to do so, subject to
37
- the following conditions:
38
-
39
- The above copyright notice and this permission notice shall be
40
- included in all copies or substantial portions of the Software.
41
-
42
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
43
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
44
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
45
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
46
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
47
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
48
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile DELETED
@@ -1,26 +0,0 @@
1
- require 'rubygems'
2
- gem 'hoe', '>= 2.1.0'
3
- require 'hoe'
4
- require 'fileutils'
5
- require './lib/ruby-state-machine'
6
-
7
- Hoe.plugin :newgem
8
- Hoe.plugin :website
9
- # Hoe.plugin :cucumberfeatures
10
-
11
- # Generate all the Rake tasks
12
- # Run 'rake -T' to see list of generated tasks (from gem root directory)
13
- $hoe = Hoe.spec 'ruby-state-machine' do
14
- self.developer 'stevenmiers', 'steven.miers@gmail.com'
15
- self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
16
- self.rubyforge_name = 'ruby-state-mach' #self.name # TODO this is default value
17
- # self.extra_deps = [['activesupport','>= 2.0.2']]
18
-
19
- end
20
-
21
- require 'newgem/tasks'
22
- Dir['tasks/**/*.rake'].each { |t| load t }
23
-
24
- # TODO - want other tests/tasks run by default? Add them to the list
25
- # remove_task :default
26
- # task :default => [:spec, :features]
data/config/website.yml DELETED
@@ -1,2 +0,0 @@
1
- host: stevenmiers@rubyforge.org
2
- remote_dir: /var/www/gforge-projects/ruby-state-mach
data/script/console DELETED
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # File: script/console
3
- irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
-
5
- libs = " -r irb/completion"
6
- # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
- # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
- libs << " -r #{File.dirname(__FILE__) + '/../lib/ruby-state-machine.rb'}"
9
- puts "Loading ruby-state-machine gem"
10
- exec "#{irb} #{libs} --simple-prompt"
data/script/destroy DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/destroy'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Destroy.new.run(ARGV)