baa 0.0.2 → 0.0.3

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.
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!