aspector 0.5.0

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.
@@ -0,0 +1,72 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Before advices" do
4
+ it "should work" do
5
+ klass = Class.new do
6
+ def value
7
+ @value ||= []
8
+ end
9
+
10
+ def test
11
+ value << "test"
12
+ end
13
+
14
+ def do_this
15
+ value << "do_this"
16
+ end
17
+ end
18
+
19
+ aspector(klass) do
20
+ before :test, :do_this
21
+ end
22
+
23
+ obj = klass.new
24
+ obj.test
25
+ obj.value.should == %w"do_this test"
26
+ end
27
+
28
+ it "logic in block" do
29
+ klass = Class.new do
30
+ def value
31
+ @value ||= []
32
+ end
33
+
34
+ def test
35
+ value << "test"
36
+ end
37
+ end
38
+
39
+ aspector(klass) do
40
+ before(:test){ value << 'do_block' }
41
+ end
42
+
43
+ obj = klass.new
44
+ obj.test
45
+ obj.value.should == %w"do_block test"
46
+ end
47
+
48
+ it "new methods should work" do
49
+ klass = Class.new do
50
+ aspector do
51
+ before :test, :do_this
52
+ end
53
+
54
+ def value
55
+ @value ||= []
56
+ end
57
+
58
+ def test
59
+ value << "test"
60
+ end
61
+
62
+ def do_this
63
+ value << "do_this"
64
+ end
65
+ end
66
+
67
+ obj = klass.new
68
+ obj.test
69
+ obj.value.should == %w"do_this test"
70
+ end
71
+
72
+ end
@@ -0,0 +1,65 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Aspector" do
4
+ it "should work" do
5
+ klass = Class.new do
6
+ def value
7
+ @value ||= []
8
+ end
9
+
10
+ def test
11
+ value << "test"
12
+ end
13
+
14
+ def do_before
15
+ value << "do_before"
16
+ end
17
+
18
+ def do_after result
19
+ value << "do_after"
20
+ result
21
+ end
22
+
23
+ def do_around &block
24
+ value << "do_around_before"
25
+ result = block.call
26
+ value << "do_around_after"
27
+ result
28
+ end
29
+ end
30
+
31
+ aspector(klass) do
32
+ before :test, :do_before
33
+ after :test, :do_after
34
+ around :test, :do_around
35
+ end
36
+
37
+ obj = klass.new
38
+ obj.test
39
+ obj.value.should == %w"do_around_before do_before test do_after do_around_after"
40
+ end
41
+
42
+ it "multiple aspects should work together" do
43
+ klass = Class.new do
44
+ def value
45
+ @value ||= []
46
+ end
47
+
48
+ def test
49
+ value << "test"
50
+ end
51
+ end
52
+
53
+ aspector(klass) do
54
+ before(:test) { value << 'first_aspect' }
55
+ end
56
+
57
+ aspector(klass) do
58
+ before(:test) { value << 'second_aspect' }
59
+ end
60
+
61
+ obj = klass.new
62
+ obj.test
63
+ obj.value.should == %w"second_aspect first_aspect test"
64
+ end
65
+ end
@@ -0,0 +1,55 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Aspects combined" do
4
+ it "should work" do
5
+ klass = Class.new do
6
+ def value
7
+ @value ||= []
8
+ end
9
+
10
+ def test
11
+ value << "test"
12
+ end
13
+
14
+ def do_before
15
+ value << "do_before"
16
+ end
17
+
18
+ def do_after result
19
+ value << "do_after"
20
+ result
21
+ end
22
+
23
+ def do_around &block
24
+ value << "do_around_before"
25
+ result = block.call
26
+ value << "do_around_after"
27
+ result
28
+ end
29
+ end
30
+
31
+ aspector(klass) do
32
+ before :test, :do_before
33
+ after :test, :do_after
34
+ around :test, :do_around
35
+ end
36
+
37
+ klass.class_eval do
38
+ aspector do
39
+ before(:test) { value << "do_before_block" }
40
+ end
41
+
42
+ def self.method_added method
43
+ method_added_aspector(method)
44
+ end
45
+
46
+ def test
47
+ value << "new_test"
48
+ end
49
+ end
50
+
51
+ obj = klass.new
52
+ obj.test
53
+ obj.value.should == %w"do_before_block do_around_before do_before new_test do_after do_around_after"
54
+ end
55
+ end
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'aspector'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+ config.mock_with :mocha
12
+ end
metadata ADDED
@@ -0,0 +1,321 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aspector
3
+ version: !ruby/object:Gem::Version
4
+ hash: 11
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 5
9
+ - 0
10
+ version: 0.5.0
11
+ platform: ruby
12
+ authors:
13
+ - Guoliang Cao
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-11-11 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ prerelease: false
23
+ name: rspec
24
+ type: :development
25
+ version_requirements: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ hash: 3
31
+ segments:
32
+ - 2
33
+ - 3
34
+ - 0
35
+ version: 2.3.0
36
+ requirement: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ prerelease: false
39
+ name: mocha
40
+ type: :development
41
+ version_requirements: &id002 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ hash: 55
47
+ segments:
48
+ - 0
49
+ - 10
50
+ - 0
51
+ version: 0.10.0
52
+ requirement: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ prerelease: false
55
+ name: bundler
56
+ type: :development
57
+ version_requirements: &id003 !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ hash: 23
63
+ segments:
64
+ - 1
65
+ - 0
66
+ - 0
67
+ version: 1.0.0
68
+ requirement: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ prerelease: false
71
+ name: jeweler
72
+ type: :development
73
+ version_requirements: &id004 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ hash: 7
79
+ segments:
80
+ - 1
81
+ - 6
82
+ - 4
83
+ version: 1.6.4
84
+ requirement: *id004
85
+ - !ruby/object:Gem::Dependency
86
+ prerelease: false
87
+ name: rcov
88
+ type: :development
89
+ version_requirements: &id005 !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ hash: 3
95
+ segments:
96
+ - 0
97
+ version: "0"
98
+ requirement: *id005
99
+ - !ruby/object:Gem::Dependency
100
+ prerelease: false
101
+ name: reek
102
+ type: :development
103
+ version_requirements: &id006 !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ~>
107
+ - !ruby/object:Gem::Version
108
+ hash: 15
109
+ segments:
110
+ - 1
111
+ - 2
112
+ - 8
113
+ version: 1.2.8
114
+ requirement: *id006
115
+ - !ruby/object:Gem::Dependency
116
+ prerelease: false
117
+ name: roodi
118
+ type: :development
119
+ version_requirements: &id007 !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ hash: 11
125
+ segments:
126
+ - 2
127
+ - 1
128
+ - 0
129
+ version: 2.1.0
130
+ requirement: *id007
131
+ - !ruby/object:Gem::Dependency
132
+ prerelease: false
133
+ name: guard
134
+ type: :development
135
+ version_requirements: &id008 !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ~>
139
+ - !ruby/object:Gem::Version
140
+ hash: 55
141
+ segments:
142
+ - 0
143
+ - 8
144
+ - 4
145
+ version: 0.8.4
146
+ requirement: *id008
147
+ - !ruby/object:Gem::Dependency
148
+ prerelease: false
149
+ name: guard-bundler
150
+ type: :development
151
+ version_requirements: &id009 !ruby/object:Gem::Requirement
152
+ none: false
153
+ requirements:
154
+ - - ~>
155
+ - !ruby/object:Gem::Version
156
+ hash: 29
157
+ segments:
158
+ - 0
159
+ - 1
160
+ - 3
161
+ version: 0.1.3
162
+ requirement: *id009
163
+ - !ruby/object:Gem::Dependency
164
+ prerelease: false
165
+ name: guard-rspec
166
+ type: :development
167
+ version_requirements: &id010 !ruby/object:Gem::Requirement
168
+ none: false
169
+ requirements:
170
+ - - ~>
171
+ - !ruby/object:Gem::Version
172
+ hash: 15
173
+ segments:
174
+ - 0
175
+ - 5
176
+ - 2
177
+ version: 0.5.2
178
+ requirement: *id010
179
+ - !ruby/object:Gem::Dependency
180
+ prerelease: false
181
+ name: guard-shell
182
+ type: :development
183
+ version_requirements: &id011 !ruby/object:Gem::Requirement
184
+ none: false
185
+ requirements:
186
+ - - ~>
187
+ - !ruby/object:Gem::Version
188
+ hash: 25
189
+ segments:
190
+ - 0
191
+ - 1
192
+ - 1
193
+ version: 0.1.1
194
+ requirement: *id011
195
+ - !ruby/object:Gem::Dependency
196
+ prerelease: false
197
+ name: rb-fsevent
198
+ type: :development
199
+ version_requirements: &id012 !ruby/object:Gem::Requirement
200
+ none: false
201
+ requirements:
202
+ - - ~>
203
+ - !ruby/object:Gem::Version
204
+ hash: 97
205
+ segments:
206
+ - 0
207
+ - 4
208
+ - 3
209
+ - 1
210
+ version: 0.4.3.1
211
+ requirement: *id012
212
+ - !ruby/object:Gem::Dependency
213
+ prerelease: false
214
+ name: growl
215
+ type: :development
216
+ version_requirements: &id013 !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ~>
220
+ - !ruby/object:Gem::Version
221
+ hash: 17
222
+ segments:
223
+ - 1
224
+ - 0
225
+ - 3
226
+ version: 1.0.3
227
+ requirement: *id013
228
+ - !ruby/object:Gem::Dependency
229
+ prerelease: false
230
+ name: awesome_print
231
+ type: :development
232
+ version_requirements: &id014 !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ hash: 3
238
+ segments:
239
+ - 0
240
+ version: "0"
241
+ requirement: *id014
242
+ description: ""
243
+ email: gcao99@gmail.com
244
+ executables: []
245
+
246
+ extensions: []
247
+
248
+ extra_rdoc_files:
249
+ - LICENSE.txt
250
+ - README.rdoc
251
+ files:
252
+ - .document
253
+ - .irbrc
254
+ - .rspec
255
+ - .rvmrc
256
+ - Gemfile
257
+ - Gemfile.lock
258
+ - Guardfile
259
+ - LICENSE.txt
260
+ - README.rdoc
261
+ - Rakefile
262
+ - VERSION
263
+ - examples/around_example.rb
264
+ - examples/aspector_apply_example.rb
265
+ - examples/aspector_example.rb
266
+ - lib/aspector.rb
267
+ - lib/aspector/advice.rb
268
+ - lib/aspector/advice_metadata.rb
269
+ - lib/aspector/aspect.rb
270
+ - lib/aspector/aspect_instance.rb
271
+ - lib/aspector/aspect_instances.rb
272
+ - lib/aspector/deferred_logic.rb
273
+ - lib/aspector/method_matcher.rb
274
+ - lib/aspector/module_extension.rb
275
+ - lib/aspector/object_extension.rb
276
+ - lib/aspector/return_this.rb
277
+ - spec/aspect_on_eigen_class_spec.rb
278
+ - spec/aspect_on_object_spec.rb
279
+ - spec/aspector/after_spec.rb
280
+ - spec/aspector/around_spec.rb
281
+ - spec/aspector/aspect_spec.rb
282
+ - spec/aspector/before_spec.rb
283
+ - spec/aspector_spec.rb
284
+ - spec/aspects_combined_spec.rb
285
+ - spec/spec_helper.rb
286
+ has_rdoc: true
287
+ homepage: http://github.com/gcao/aspector
288
+ licenses:
289
+ - MIT
290
+ post_install_message:
291
+ rdoc_options: []
292
+
293
+ require_paths:
294
+ - lib
295
+ required_ruby_version: !ruby/object:Gem::Requirement
296
+ none: false
297
+ requirements:
298
+ - - ">="
299
+ - !ruby/object:Gem::Version
300
+ hash: 3
301
+ segments:
302
+ - 0
303
+ version: "0"
304
+ required_rubygems_version: !ruby/object:Gem::Requirement
305
+ none: false
306
+ requirements:
307
+ - - ">="
308
+ - !ruby/object:Gem::Version
309
+ hash: 3
310
+ segments:
311
+ - 0
312
+ version: "0"
313
+ requirements: []
314
+
315
+ rubyforge_project:
316
+ rubygems_version: 1.4.2
317
+ signing_key:
318
+ specification_version: 3
319
+ summary: Aspect Oriented Ruby Programming
320
+ test_files: []
321
+