soveran-micromachine 0.0.4 → 0.0.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.
@@ -0,0 +1,63 @@
1
+ MicroMachine
2
+ ============
3
+
4
+ Minimal Finite State Machine.
5
+
6
+ Description
7
+ -----------
8
+
9
+ There are many finite state machine implementations for Ruby, and they
10
+ all provide a nice DSL for declaring events, exceptions, callbacks,
11
+ and all kinds of niceties in general.
12
+
13
+ But if all you want is a finite state machine, look no further: this is only
14
+ 15 lines of code and provides everything a finite state machine must have, and
15
+ nothing more.
16
+
17
+ Usage
18
+ -----
19
+
20
+ require 'micromachine'
21
+
22
+ fsm = MicroMachine.new(:new) # Initial state.
23
+
24
+ fsm.transitions_for[:confirm] = { :new => :confirmed }
25
+ fsm.transitions_for[:ignore] = { :new => :ignored }
26
+ fsm.transitions_for[:reset] = { :confirmed => :new, :ignored => :new }
27
+
28
+ fsm.fire(:confirm) #=> true
29
+ fsm.fire(:ignore) #=> false
30
+ fsm.fire(:reset) #=> true
31
+ fsm.fire(:ignore) #=> true
32
+
33
+ Installation
34
+ ------------
35
+
36
+ $ gem sources -a http://gems.github.com (you only have to do this once)
37
+ $ sudo gem install soveran-micromachine
38
+
39
+ License
40
+ -------
41
+
42
+ Copyright (c) 2009 Michel Martens for Citrusbyte
43
+
44
+ Permission is hereby granted, free of charge, to any person
45
+ obtaining a copy of this software and associated documentation
46
+ files (the "Software"), to deal in the Software without
47
+ restriction, including without limitation the rights to use,
48
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
49
+ copies of the Software, and to permit persons to whom the
50
+ Software is furnished to do so, subject to the following
51
+ conditions:
52
+
53
+ The above copyright notice and this permission notice shall be
54
+ included in all copies or substantial portions of the Software.
55
+
56
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
57
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
58
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
59
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
60
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
61
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
62
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
63
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -1,24 +1,24 @@
1
1
  require File.join(File.dirname(__FILE__), '../lib/micromachine')
2
2
 
3
3
  fsm = MicroMachine.new(:pending)
4
- fsm.events[:confirm] = { :pending => :confirmed }
5
- fsm.events[:ignore] = { :pending => :ignored }
6
- fsm.events[:reset] = { :confirmed => :pending, :ignored => :pending }
4
+ fsm.transitions_for[:confirm] = { :pending => :confirmed }
5
+ fsm.transitions_for[:ignore] = { :pending => :ignored }
6
+ fsm.transitions_for[:reset] = { :confirmed => :pending, :ignored => :pending }
7
7
 
8
8
  puts "Should print Confirmed, Reset and Ignored."
9
9
 
10
- if fsm.fire(:confirm)
10
+ if fsm.trigger(:confirm)
11
11
  puts "Confirmed"
12
12
  end
13
13
 
14
- if fsm.fire(:ignore)
14
+ if fsm.trigger(:ignore)
15
15
  puts "Ignored"
16
16
  end
17
17
 
18
- if fsm.fire(:reset)
18
+ if fsm.trigger(:reset)
19
19
  puts "Reset"
20
20
  end
21
21
 
22
- if fsm.fire(:ignore)
22
+ if fsm.trigger(:ignore)
23
23
  puts "Ignored"
24
24
  end
@@ -2,24 +2,24 @@ require 'rubygems'
2
2
  require 'micromachine'
3
3
 
4
4
  fsm = MicroMachine.new(:pending)
5
- fsm.events[:confirm] = { :pending => :confirmed }
6
- fsm.events[:ignore] = { :pending => :ignored }
7
- fsm.events[:reset] = { :confirmed => :pending, :ignored => :pending }
5
+ fsm.transitions_for[:confirm] = { :pending => :confirmed }
6
+ fsm.transitions_for[:ignore] = { :pending => :ignored }
7
+ fsm.transitions_for[:reset] = { :confirmed => :pending, :ignored => :pending }
8
8
 
9
9
  puts "Should print Confirmed, Reset and Ignored."
10
10
 
11
- if fsm.fire(:confirm)
11
+ if fsm.trigger(:confirm)
12
12
  puts "Confirmed"
13
13
  end
14
14
 
15
- if fsm.fire(:ignore)
15
+ if fsm.trigger(:ignore)
16
16
  puts "Ignored"
17
17
  end
18
18
 
19
- if fsm.fire(:reset)
19
+ if fsm.trigger(:reset)
20
20
  puts "Reset"
21
21
  end
22
22
 
23
- if fsm.fire(:ignore)
23
+ if fsm.trigger(:ignore)
24
24
  puts "Ignored"
25
25
  end
@@ -4,27 +4,27 @@
4
4
  #
5
5
  # fsm = MicroMachine.new(:new) # Initial state.
6
6
  #
7
- # fsm.events[:confirm] = { :new => :confirmed }
8
- # fsm.events[:ignore] = { :new => :ignored }
9
- # fsm.events[:reset] = { :confirmed => :new, :ignored => :new }
7
+ # fsm.transitions_for[:confirm] = { :new => :confirmed }
8
+ # fsm.transitions_for[:ignore] = { :new => :ignored }
9
+ # fsm.transitions_for[:reset] = { :confirmed => :new, :ignored => :new }
10
10
  #
11
- # fsm.fire(:confirm) #=> true
12
- # fsm.fire(:ignore) #=> false
13
- # fsm.fire(:reset) #=> true
14
- # fsm.fire(:ignore) #=> true
11
+ # fsm.trigger(:confirm) #=> true
12
+ # fsm.trigger(:ignore) #=> false
13
+ # fsm.trigger(:reset) #=> true
14
+ # fsm.trigger(:ignore) #=> true
15
15
  #
16
16
  class MicroMachine
17
- attr :events
17
+ attr :transitions_for
18
18
  attr :state
19
19
 
20
20
  def initialize initial_state
21
21
  @state = initial_state
22
- @events = Hash.new
22
+ @transitions_for = Hash.new
23
23
  end
24
24
 
25
- def fire event
26
- if events[event][@state]
27
- @state = events[event][@state]
25
+ def trigger event
26
+ if transitions_for[event][@state]
27
+ @state = transitions_for[event][@state]
28
28
  end
29
29
  end
30
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soveran-micromachine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michel Martens
@@ -19,25 +19,20 @@ executables: []
19
19
 
20
20
  extensions: []
21
21
 
22
- extra_rdoc_files:
23
- - README.rdoc
22
+ extra_rdoc_files: []
23
+
24
24
  files:
25
25
  - lib/micromachine.rb
26
- - README.rdoc
26
+ - README.markdown
27
27
  - LICENSE
28
28
  - Rakefile
29
29
  - example/micromachine_sample.rb
30
30
  - example/micromachine_sample_gem.rb
31
- has_rdoc: true
31
+ has_rdoc: false
32
32
  homepage: http://github.com/soveran/micromachine
33
33
  post_install_message:
34
- rdoc_options:
35
- - --line-numbers
36
- - --inline-source
37
- - --title
38
- - micromachine
39
- - --main
40
- - README.rdoc
34
+ rdoc_options: []
35
+
41
36
  require_paths:
42
37
  - lib
43
38
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -1,27 +0,0 @@
1
- = MicroMachine
2
-
3
- Minimal Finite State Machine.
4
-
5
- == Usage
6
-
7
-
8
- require 'micromachine'
9
-
10
- fsm = MicroMachine.new(:new) # Initial state.
11
-
12
- fsm.events[:confirm] = { :new => :confirmed }
13
- fsm.events[:ignore] = { :new => :ignored }
14
- fsm.events[:reset] = { :confirmed => :new, :ignored => :new }
15
-
16
- fsm.fire(:confirm) #=> true
17
- fsm.fire(:ignore) #=> false
18
- fsm.fire(:reset) #=> true
19
- fsm.fire(:ignore) #=> true
20
-
21
- == Installation
22
-
23
- $ gem sources -a http://gems.github.com (you only have to do this once)
24
- $ sudo gem install soveran-micromachine
25
-
26
- Copyright (c) 2009 Michel Martens.
27
- Released under the MIT license.