simple_states 0.0.2 → 0.0.4

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/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
+