simple_states 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.
data/Gemfile.lock CHANGED
@@ -1,23 +1,20 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_states (0.0.2)
4
+ simple_states (0.0.5)
5
5
  activesupport
6
6
  hashr (~> 0.0.10)
7
7
 
8
8
  GEM
9
9
  remote: http://rubygems.org/
10
10
  specs:
11
- activesupport (3.0.9)
12
- archive-tar-minitar (0.5.2)
11
+ activesupport (3.0.10)
13
12
  columnize (0.3.4)
14
- hashr (0.0.10)
13
+ hashr (0.0.11)
15
14
  linecache (0.46)
16
15
  rbx-require-relative (> 0.0.4)
17
- linecache19 (0.5.12)
18
- ruby_core_source (>= 0.1.4)
19
16
  mocha (0.9.12)
20
- rake (0.9.2)
17
+ rake (0.9.3.beta.1)
21
18
  rbx-require-relative (0.0.5)
22
19
  require_relative (1.0.2)
23
20
  ruby-debug (0.10.4)
@@ -25,16 +22,6 @@ GEM
25
22
  ruby-debug-base (~> 0.10.4.0)
26
23
  ruby-debug-base (0.10.4)
27
24
  linecache (>= 0.3)
28
- ruby-debug-base19 (0.11.25)
29
- columnize (>= 0.3.1)
30
- linecache19 (>= 0.5.11)
31
- ruby_core_source (>= 0.1.4)
32
- ruby-debug19 (0.11.6)
33
- columnize (>= 0.3.1)
34
- linecache19 (>= 0.5.11)
35
- ruby-debug-base19 (>= 0.11.19)
36
- ruby_core_source (0.1.5)
37
- archive-tar-minitar (>= 0.5.2)
38
25
  test_declarative (0.0.5)
39
26
 
40
27
  PLATFORMS
@@ -42,9 +29,8 @@ PLATFORMS
42
29
 
43
30
  DEPENDENCIES
44
31
  mocha
45
- rake
32
+ rake (~> 0.9.3.beta.1)
46
33
  require_relative (~> 1.0.1)
47
34
  ruby-debug
48
- ruby-debug19
49
35
  simple_states!
50
36
  test_declarative
@@ -32,9 +32,9 @@ module SimpleStates
32
32
  end
33
33
  end
34
34
 
35
- def merge(other)
35
+ def merge(other, append = true)
36
36
  other.options.each do |key, value|
37
- options[key] = [options[key], value].compact unless key == :to
37
+ options[key] = [options[key]].send(append ? :push : :unshift, value).compact.flatten
38
38
  end
39
39
  end
40
40
 
@@ -59,7 +59,7 @@ module SimpleStates
59
59
  if state = target_state(object)
60
60
  object.past_states << object.state if object.state
61
61
  object.state = state.to_sym
62
- object.send(:"#{state}_at=", Time.now) if object.respond_to?(:"#{state}_at=")
62
+ object.send(:"#{state}_at=", Time.now) if object.respond_to?(:"#{state}_at=") && object.respond_to?(:"#{state}_at") && object.send(:"#{state}_at").nil?
63
63
  object.save! if @saving
64
64
  end
65
65
  end
@@ -75,11 +75,9 @@ module SimpleStates
75
75
  end
76
76
 
77
77
  def send_method(object, method, args)
78
- object.send method, *case arity = self.arity(object, method)
79
- when 0; []
80
- when -1; [name].concat(args)
81
- else; [name].concat(args).slice(0..arity - 1)
82
- end
78
+ arity = self.arity(object, method)
79
+ args = [name].concat(args)
80
+ object.send method, *args.slice(0, arity < 0 ? args.size : arity)
83
81
  end
84
82
 
85
83
  def arity(object, method)
@@ -16,14 +16,22 @@ module SimpleStates
16
16
  end
17
17
  end
18
18
 
19
+ attr_reader :events
20
+
19
21
  def initialize(events)
20
- merge_events(events).each do |event|
21
- define_event(event)
22
- end
22
+ @events = merge_events(events)
23
+ setup
23
24
  end
24
25
 
25
26
  protected
26
27
 
28
+ def setup
29
+ events.each do |event|
30
+ define_event(event)
31
+ end
32
+ end
33
+
34
+
27
35
  def define_event(event)
28
36
  define_method(event.name) do |*args|
29
37
  event.send(:call, self, *args) do
@@ -39,8 +47,17 @@ module SimpleStates
39
47
  end
40
48
 
41
49
  def merge_events(events)
42
- merges, events = *events.partition { |event| event.name == :all }
43
- events.each { |event| merges.each { |merge| event.merge(merge) } }
50
+ if merge_ix = events.index { |event| event.name == :all }
51
+ merge = events.slice!(merge_ix)
52
+ events.each_with_index do |event, ix|
53
+ # method = ? :append : :prepend
54
+
55
+ event.merge(merge, ix < merge_ix)
56
+ end
57
+ merge_events(events)
58
+ else
59
+ events
60
+ end
44
61
  end
45
62
  end
46
63
  end
@@ -1,3 +1,3 @@
1
1
  module SimpleStates
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,103 +1,77 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: simple_states
3
- version: !ruby/object:Gem::Version
4
- hash: 23
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 4
10
- version: 0.0.4
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Sven Fuchs
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-08-05 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-08-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: activesupport
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70212808497680 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: hashr
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70212808497680
25
+ - !ruby/object:Gem::Dependency
26
+ name: hashr
27
+ requirement: &70212808496780 !ruby/object:Gem::Requirement
38
28
  none: false
39
- requirements:
29
+ requirements:
40
30
  - - ~>
41
- - !ruby/object:Gem::Version
42
- hash: 11
43
- segments:
44
- - 0
45
- - 0
46
- - 10
31
+ - !ruby/object:Gem::Version
47
32
  version: 0.0.10
48
33
  type: :runtime
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: rake
52
34
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70212808496780
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
38
+ requirement: &70212808496020 !ruby/object:Gem::Requirement
54
39
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 0.9.3.beta.1
62
44
  type: :development
63
- version_requirements: *id003
64
- - !ruby/object:Gem::Dependency
65
- name: test_declarative
66
45
  prerelease: false
67
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70212808496020
47
+ - !ruby/object:Gem::Dependency
48
+ name: test_declarative
49
+ requirement: &70212808511540 !ruby/object:Gem::Requirement
68
50
  none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
76
55
  type: :development
77
- version_requirements: *id004
78
- - !ruby/object:Gem::Dependency
79
- name: mocha
80
56
  prerelease: false
81
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70212808511540
58
+ - !ruby/object:Gem::Dependency
59
+ name: mocha
60
+ requirement: &70212808510720 !ruby/object:Gem::Requirement
82
61
  none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- hash: 3
87
- segments:
88
- - 0
89
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
90
66
  type: :development
91
- version_requirements: *id005
92
- description: "[description]"
67
+ prerelease: false
68
+ version_requirements: *70212808510720
69
+ description: ! '[description]'
93
70
  email: svenfuchs@artweb-design.de
94
71
  executables: []
95
-
96
72
  extensions: []
97
-
98
73
  extra_rdoc_files: []
99
-
100
- files:
74
+ files:
101
75
  - lib/simple_states/event.rb
102
76
  - lib/simple_states/states.rb
103
77
  - lib/simple_states/version.rb
@@ -110,36 +84,26 @@ files:
110
84
  - README.md
111
85
  homepage: https://github.com/svenfuchs/simple_states
112
86
  licenses: []
113
-
114
87
  post_install_message:
115
88
  rdoc_options: []
116
-
117
- require_paths:
89
+ require_paths:
118
90
  - lib
119
- required_ruby_version: !ruby/object:Gem::Requirement
91
+ required_ruby_version: !ruby/object:Gem::Requirement
120
92
  none: false
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
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
129
98
  none: false
130
- requirements:
131
- - - ">="
132
- - !ruby/object:Gem::Version
133
- hash: 3
134
- segments:
135
- - 0
136
- version: "0"
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
137
103
  requirements: []
138
-
139
- rubyforge_project: "[none]"
104
+ rubyforge_project: ! '[none]'
140
105
  rubygems_version: 1.8.6
141
106
  signing_key:
142
107
  specification_version: 3
143
- summary: "[summary]"
108
+ summary: ! '[summary]'
144
109
  test_files: []
145
-