stateology 0.1.6 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README.markdown +3 -29
  2. data/lib/stateology.rb +5 -1
  3. metadata +1 -1
data/README.markdown CHANGED
@@ -4,11 +4,13 @@ Stateology
4
4
  *Clean and fast Object state transitions in Ruby using the Mixology C extension.*
5
5
 
6
6
  Supports:
7
+
7
8
  * Dynamic switching between states (mixing and unmixing modules)
8
- * Clean DSL-style syntax
9
9
  * Optional state\_entry() and state\_exit() hooks for each state (automatically called upon state entry and exit)
10
10
  * support for subclassing of classes that include Stateology (see below)
11
11
  * support for nested states, i.e states defined within other states
12
+ * Clean DSL-style syntax
13
+ * *NO MAGIC!* Stateology does not use any behind-the-scenes method aliasing nor does it make use of any hooks.
12
14
 
13
15
  Use as in the following:
14
16
 
@@ -42,34 +44,10 @@ Use as in the following:
42
44
  puts "exiting Angry state"
43
45
  end
44
46
  }
45
-
46
- # methods declared outside a 'state' are not part of any state
47
-
48
- def state_entry
49
- puts "entering Default state"
50
- end
51
-
52
- def do_something
53
- puts "stares at the ceiling"
54
- end
55
-
56
- def state_exit
57
- puts "exiting Default state"
58
- end
59
-
60
- # if we want the state_entry to run on instantiation
61
- # we must call it from the initialize method
62
- def initialize
63
- state_entry
64
- end
65
-
66
47
  end
67
48
 
68
49
  s = Sample.new
69
50
 
70
- # in no state
71
- s.do_something #=> "stares at the ceiling"
72
-
73
51
  # now switch to Happy state
74
52
  s.state :Happy
75
53
  s.do_something #=> "Pets a puppy"
@@ -78,10 +56,6 @@ Use as in the following:
78
56
  s.state :Angry
79
57
  s.do_something #=> "Kicks a puppy"
80
58
 
81
- # now switch back to no state
82
- s.state nil
83
- s.do_something #=> "stares at the ceiling"
84
-
85
59
  UPDATE:
86
60
 
87
61
  * made it so subclasses can inherit states from their superclasses e.g
data/lib/stateology.rb CHANGED
@@ -1,3 +1,7 @@
1
+ # stateology.rb
2
+ # (C) John Mair 2008
3
+ # This program is distributed under the terms of the MIT License
4
+
1
5
  begin
2
6
  require 'rubygems'
3
7
  rescue LoadError
@@ -7,7 +11,7 @@ end
7
11
  require 'mixology'
8
12
 
9
13
  module Stateology
10
- VERSION = "0.1.6"
14
+ VERSION = "0.1.8"
11
15
 
12
16
  # alternative to 'nil'
13
17
  Default = nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stateology
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Mair