simple_states 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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
-