simple_states 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_states (0.0.1)
4
+ simple_states (0.0.2)
5
5
  activesupport
6
6
  hashr (~> 0.0.10)
7
7
 
@@ -17,6 +17,7 @@ GEM
17
17
  linecache19 (0.5.12)
18
18
  ruby_core_source (>= 0.1.4)
19
19
  mocha (0.9.12)
20
+ rake (0.9.2)
20
21
  rbx-require-relative (0.0.5)
21
22
  require_relative (1.0.2)
22
23
  ruby-debug (0.10.4)
@@ -41,6 +42,7 @@ PLATFORMS
41
42
 
42
43
  DEPENDENCIES
43
44
  mocha
45
+ rake
44
46
  require_relative (~> 1.0.1)
45
47
  ruby-debug
46
48
  ruby-debug19
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # simple\_states
1
+ # simple\_states [![Build Status](https://secure.travis-ci.org/svenfuchs/simple_states.png)](http://travis-ci.org/svenfuchs/simple_states)
2
2
 
3
3
  A super-slim (~200 loc) statemachine-like support library focussed on use in
4
4
  Travis CI.
@@ -15,11 +15,19 @@ Define states and events like this:
15
15
  event :start, :from => :created, :to => :started, :if => :startable?
16
16
  event :finish, :to => :finished, :after => :cleanup
17
17
 
18
- attr_accessor :state
18
+ attr_accessor :state, :started_at, :finished_at
19
19
 
20
20
  def start
21
21
  # start foo
22
22
  end
23
+
24
+ def startable?
25
+ true
26
+ end
27
+
28
+ def cleanup
29
+ # cleanup foo
30
+ end
23
31
  end
24
32
 
25
33
  Including the SimpleStates module to your class is currently required. We'll add
@@ -66,3 +74,35 @@ If no target state was given for an event then SimpleStates will try to derive
66
74
  it from the states list. I.e. for an event `start` it will check the states
67
75
  list for a state `started` and use it. If it can not find a target state this
68
76
  way then it will raise an exception.
77
+
78
+ By default SimpleStates will assum `:created` as an initial state. You can
79
+ overwrite this using:
80
+
81
+ self.initial_state :something
82
+
83
+ So with the example above something the following would work:
84
+
85
+ foo = Foo.new
86
+
87
+ foo.state # :created
88
+ foo.created? # true
89
+ foo.was_created? # true
90
+ foo.state?(:created) # true
91
+
92
+ foo.start # checks Foo#startable? and then calls Foo#start
93
+
94
+ foo.state # :started
95
+ foo.started? # true
96
+ foo.started_at # Time.now
97
+ foo.created? # false
98
+ foo.was_created? # true
99
+
100
+ foo.finish # just performs state logic as there's no Foo#finish
101
+
102
+ foo.state # :finished
103
+ foo.finished? # true
104
+ foo.finished_at # Time.now
105
+ foo.was_created? # true
106
+ foo.was_started? # true
107
+
108
+
@@ -11,7 +11,8 @@ module SimpleStates
11
11
  end
12
12
 
13
13
  def proxy_for(klass)
14
- klass.const_defined?(:States, false) ? klass::States : klass.const_set(:States, new(klass.events))
14
+ args = [:States].concat(klass.method(:const_defined?).arity != 1 ? [false] : [])
15
+ klass.const_defined?(*args) ? klass::States : klass.const_set(:States, new(klass.events))
15
16
  end
16
17
  end
17
18
 
@@ -1,3 +1,3 @@
1
1
  module SimpleStates
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,66 +1,103 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: simple_states
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 4
10
+ version: 0.0.4
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Sven Fuchs
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-08-04 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2011-08-05 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: activesupport
16
- requirement: &70366831755540 !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
17
24
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
22
32
  type: :runtime
23
- prerelease: false
24
- version_requirements: *70366831755540
25
- - !ruby/object:Gem::Dependency
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
26
35
  name: hashr
27
- requirement: &70366831754780 !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
28
38
  none: false
29
- requirements:
39
+ requirements:
30
40
  - - ~>
31
- - !ruby/object:Gem::Version
41
+ - !ruby/object:Gem::Version
42
+ hash: 11
43
+ segments:
44
+ - 0
45
+ - 0
46
+ - 10
32
47
  version: 0.0.10
33
48
  type: :runtime
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: rake
34
52
  prerelease: false
35
- version_requirements: *70366831754780
36
- - !ruby/object:Gem::Dependency
37
- name: test_declarative
38
- requirement: &70366831754080 !ruby/object:Gem::Requirement
53
+ requirement: &id003 !ruby/object:Gem::Requirement
39
54
  none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
43
- version: '0'
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
44
62
  type: :development
63
+ version_requirements: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ name: test_declarative
45
66
  prerelease: false
46
- version_requirements: *70366831754080
47
- - !ruby/object:Gem::Dependency
48
- name: mocha
49
- requirement: &70366831752860 !ruby/object:Gem::Requirement
67
+ requirement: &id004 !ruby/object:Gem::Requirement
50
68
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
55
76
  type: :development
77
+ version_requirements: *id004
78
+ - !ruby/object:Gem::Dependency
79
+ name: mocha
56
80
  prerelease: false
57
- version_requirements: *70366831752860
58
- description: ! '[description]'
81
+ requirement: &id005 !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ hash: 3
87
+ segments:
88
+ - 0
89
+ version: "0"
90
+ type: :development
91
+ version_requirements: *id005
92
+ description: "[description]"
59
93
  email: svenfuchs@artweb-design.de
60
94
  executables: []
95
+
61
96
  extensions: []
97
+
62
98
  extra_rdoc_files: []
63
- files:
99
+
100
+ files:
64
101
  - lib/simple_states/event.rb
65
102
  - lib/simple_states/states.rb
66
103
  - lib/simple_states/version.rb
@@ -73,26 +110,36 @@ files:
73
110
  - README.md
74
111
  homepage: https://github.com/svenfuchs/simple_states
75
112
  licenses: []
113
+
76
114
  post_install_message:
77
115
  rdoc_options: []
78
- require_paths:
116
+
117
+ require_paths:
79
118
  - lib
80
- required_ruby_version: !ruby/object:Gem::Requirement
119
+ required_ruby_version: !ruby/object:Gem::Requirement
81
120
  none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
- required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ hash: 3
125
+ segments:
126
+ - 0
127
+ version: "0"
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
129
  none: false
88
- requirements:
89
- - - ! '>='
90
- - !ruby/object:Gem::Version
91
- version: '0'
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ hash: 3
134
+ segments:
135
+ - 0
136
+ version: "0"
92
137
  requirements: []
93
- rubyforge_project: ! '[none]'
138
+
139
+ rubyforge_project: "[none]"
94
140
  rubygems_version: 1.8.6
95
141
  signing_key:
96
142
  specification_version: 3
97
- summary: ! '[summary]'
143
+ summary: "[summary]"
98
144
  test_files: []
145
+