baa 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/baa.rb +48 -29
  3. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 80689fb2cecc9c5ce42891fa6ecbb5b94d0e6d84
4
- data.tar.gz: 9d5bec8102333ed7ece667444a4657ceb755cf16
3
+ metadata.gz: 902353ca9f7b51dcde005fd028d66dccb3f0bbd3
4
+ data.tar.gz: cde054fa02c5905c2732db2ec0ed0a92486d6a90
5
5
  SHA512:
6
- metadata.gz: bd1806114813e3db7b9972a54b10bba7475967caac9820757a61a187b6b5fa77db9f420eff0afd005ab6b24a647d07e3b2c4995dc304d4679cf290cd52cbf825
7
- data.tar.gz: 90d8756dfb4630c2094a29d60c5702b03c4e0603787c4154fa1b5ef289a974aa44ed06b2eed0376652d08f8bc1f43db2256af71626f54b0745c55080a3fc5464
6
+ metadata.gz: 28b563f5c4e54f4f7a7b151e0aaac2f5b874c9c0f63c88309b2b9ef60c47c2958bfa309e06fc90a73eec331e57b59de2fc2307890bf603f2885597beaf74f7f1
7
+ data.tar.gz: fb2925d7e67457e4e8bd41a2d06a29993054eee8a5dbccde9b3de5819c731ea2aa560e3b8190ae1b14ef1d030ea5004bd3d6efab7ac6d0b4af32b64ba76f884a
data/lib/baa.rb CHANGED
@@ -1,43 +1,62 @@
1
- class BAA
2
- module Hooks
3
- @@_baa_hooks = {before: [], after: [], around: []}
1
+ module Hooks
2
+ @@_baa_hooks = {before: [], after: [], around: []}
4
3
 
5
- def before(*names)
6
- names.each do |name|
7
- m = instance_method(name)
8
- define_method(name) do |*args, &block|
9
- yield
10
- m.bind(self).(*args, &block)
4
+ def before(*names)
5
+ names.each do |name|
6
+ self._baa_rename_method(name)
7
+ define_method(name) do |*args, &block|
8
+ yield
9
+ if args.any?
10
+ send(self.class._baa_old_name(name), args, &block)
11
+ else
12
+ send(self.class._baa_old_name(name), &block)
11
13
  end
12
- @@_baa_hooks[:before] << name
13
14
  end
14
- @@_baa_hooks
15
+ @@_baa_hooks[:before] << name
15
16
  end
17
+ @@_baa_hooks
18
+ end
16
19
 
17
- def after(*names)
18
- names.each do |name|
19
- m = instance_method(name)
20
- define_method(name) do |*args, &block|
21
- m.bind(self).(*args, &block)
22
- yield
20
+ def after(*names)
21
+ names.each do |name|
22
+ self._baa_rename_method(name)
23
+ define_method(name) do |*args, &block|
24
+ if args.any?
25
+ send(self.class._baa_old_name(name), args, &block)
26
+ else
27
+ send(self.class._baa_old_name(name), &block)
23
28
  end
24
- @@_baa_hooks[:after] << name
29
+ yield
25
30
  end
26
- @@_baa_hooks
31
+ @@_baa_hooks[:after] << name
27
32
  end
33
+ @@_baa_hooks
34
+ end
28
35
 
29
- def around(*names, pre_method_name)
30
- names.each do |name|
31
- m = instance_method(name)
32
- define_method(name) do |*args, &block|
33
- self.send(pre_method_name)
34
- m.bind(self).(*args, &block)
35
- yield
36
+ def around(*names, pre_method_name)
37
+ names.each do |name|
38
+ self._baa_rename_method(name)
39
+ define_method(name) do |*args, &block|
40
+ self.send(pre_method_name)
41
+ if args.any?
42
+ send(self.class._baa_old_name(name), args, &block)
43
+ else
44
+ send(self.class._baa_old_name(name), &block)
36
45
  end
37
- @@_baa_hooks[:around] << name
46
+ yield
38
47
  end
39
- @@_baa_hooks
48
+ @@_baa_hooks[:around] << name
40
49
  end
50
+ @@_baa_hooks
51
+ end
52
+
53
+ def _baa_rename_method(name)
54
+ raise "Method (:#{name}) already has hooks applied\n#{@@_baa_hooks}" if @@_baa_hooks.values.flatten.include? name
55
+ alias_method self._baa_old_name(name), name
56
+ end
57
+
58
+ def _baa_old_name(name)
59
+ "_baa_#{name}".to_sym
41
60
  end
42
- end
43
61
 
62
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Whimsical Doodles
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-29 00:00:00.000000000 Z
11
+ date: 2013-10-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Before After Around hooks for Ruby classes - still in ALPHA
14
14
  email: baa@whimsicaldoodles.com
@@ -27,17 +27,17 @@ require_paths:
27
27
  - lib
28
28
  required_ruby_version: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - '>='
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: '0'
33
33
  required_rubygems_version: !ruby/object:Gem::Requirement
34
34
  requirements:
35
- - - '>='
35
+ - - ">="
36
36
  - !ruby/object:Gem::Version
37
37
  version: '0'
38
38
  requirements: []
39
39
  rubyforge_project:
40
- rubygems_version: 2.0.7
40
+ rubygems_version: 2.1.5
41
41
  signing_key:
42
42
  specification_version: 4
43
43
  summary: Baa!