nakajima-nakajima 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/nakajima.rb +1 -0
- data/lib/nakajima/core_ext/basic_object.rb +5 -0
- data/lib/nakajima/core_ext/object.rb +27 -1
- metadata +2 -1
data/lib/nakajima.rb
CHANGED
@@ -29,8 +29,34 @@ module Nakajima
|
|
29
29
|
block.bind(self)[*arguments]
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
# A proxy that returns its target after invoking the method you
|
34
|
+
# invoke. Useful for #me
|
35
|
+
class ProxyReturningMe < BasicObject
|
36
|
+
def initialize(me)
|
37
|
+
super()
|
38
|
+
@me = me
|
39
|
+
end
|
40
|
+
def method_missing(sym, *args, &block)
|
41
|
+
@me.__send__(sym, *args, &block)
|
42
|
+
@me
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# plucked from raganwald's andand
|
47
|
+
def tap(p = nil)
|
48
|
+
if block_given?
|
49
|
+
yield(self)
|
50
|
+
self
|
51
|
+
elsif p
|
52
|
+
p.to_proc.call(self)
|
53
|
+
self
|
54
|
+
else
|
55
|
+
ProxyReturningMe.new(self)
|
56
|
+
end
|
57
|
+
end unless respond_to?(:tap)
|
32
58
|
end
|
33
59
|
end
|
34
60
|
end
|
35
61
|
|
36
|
-
Object.send :include, Nakajima::Object::InstanceMethods
|
62
|
+
Object.send :include, Nakajima::Object::InstanceMethods
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nakajima-nakajima
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pat Nakajima
|
@@ -41,6 +41,7 @@ extra_rdoc_files: []
|
|
41
41
|
files:
|
42
42
|
- lib/nakajima
|
43
43
|
- lib/nakajima/core_ext
|
44
|
+
- lib/nakajima/core_ext/basic_object.rb
|
44
45
|
- lib/nakajima/core_ext/array.rb
|
45
46
|
- lib/nakajima/core_ext/proc.rb
|
46
47
|
- lib/nakajima/core_ext/object.rb
|