wrapit 0.2.2 → 0.2.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.
- data/README.md +9 -0
- data/lib/wrapit/method_wrappable.rb +8 -21
- data/lib/wrapit/version.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -24,6 +24,8 @@ Or install it yourself as:
|
|
24
24
|
|
25
25
|
## Usage
|
26
26
|
|
27
|
+
### attr_wrappable
|
28
|
+
|
27
29
|
So lets say we want to create some setters and getters for a class that come all
|
28
30
|
wrapped and ready to go.
|
29
31
|
|
@@ -54,6 +56,8 @@ In addition to wrapping up the attribute readers, attr_wrappable creates *_naked
|
|
54
56
|
foo.test_attr = "foo"
|
55
57
|
foo.test_attr_naked = "foo"
|
56
58
|
|
59
|
+
### method_wrappable
|
60
|
+
|
57
61
|
Now lets say you have a method you have inherited from a superclass you want to wrap.
|
58
62
|
|
59
63
|
class Foo
|
@@ -76,6 +80,11 @@ Now lets say you have a method you have inherited from a superclass you want to
|
|
76
80
|
|
77
81
|
And that's it!
|
78
82
|
|
83
|
+
### Further Reading
|
84
|
+
|
85
|
+
For more info on what you can do with a wrapped value have a look at the
|
86
|
+
[wrapped](https://github.com/mike-burns/wrapped) gem.
|
87
|
+
|
79
88
|
## Limitations
|
80
89
|
|
81
90
|
At the moment method_wrappable is only usable on methods defined in a superclass and
|
@@ -5,37 +5,24 @@ module Wrapit::MethodWrappable
|
|
5
5
|
|
6
6
|
def method_wrappable(*args)
|
7
7
|
args.each do |method|
|
8
|
-
|
9
|
-
|
10
|
-
mw_create_wrapped_method(method, has_args)
|
8
|
+
mw_create_naked_method(method)
|
9
|
+
mw_create_wrapped_method(method)
|
11
10
|
end
|
12
11
|
end
|
13
12
|
|
14
|
-
def mw_create_naked_method(method
|
13
|
+
def mw_create_naked_method(method)
|
15
14
|
raise Wrapit::InvalidCallerError unless caller[0] =~ /method_wrappable/
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
self.class.superclass.instance_method(method).bind(self).call(*args)
|
20
|
-
end
|
21
|
-
else
|
22
|
-
define_method :"#{method}_naked" do
|
23
|
-
self.class.superclass.instance_method(method).bind(self).call
|
24
|
-
end
|
16
|
+
define_method :"#{method}_naked" do |*args|
|
17
|
+
self.class.superclass.instance_method(method).bind(self).call(*args)
|
25
18
|
end
|
26
19
|
end
|
27
20
|
|
28
|
-
def mw_create_wrapped_method(method
|
21
|
+
def mw_create_wrapped_method(method)
|
29
22
|
raise Wrapit::InvalidCallerError unless caller[0] =~ /method_wrappable/
|
30
23
|
|
31
|
-
|
32
|
-
|
33
|
-
super(*args).wrapped
|
34
|
-
end
|
35
|
-
else
|
36
|
-
define_method method do
|
37
|
-
super().wrapped
|
38
|
-
end
|
24
|
+
define_method method do |*args|
|
25
|
+
super(*args).wrapped
|
39
26
|
end
|
40
27
|
end
|
41
28
|
end
|
data/lib/wrapit/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wrapit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -127,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
127
127
|
version: '0'
|
128
128
|
segments:
|
129
129
|
- 0
|
130
|
-
hash:
|
130
|
+
hash: 2232055303226340921
|
131
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
132
|
none: false
|
133
133
|
requirements:
|
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
136
|
version: '0'
|
137
137
|
segments:
|
138
138
|
- 0
|
139
|
-
hash:
|
139
|
+
hash: 2232055303226340921
|
140
140
|
requirements: []
|
141
141
|
rubyforge_project:
|
142
142
|
rubygems_version: 1.8.25
|