forwardable-extended 2.1.0 → 2.2.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.
- checksums.yaml +4 -4
- data/lib/forwardable/extended.rb +16 -9
- data/lib/forwardable/extended/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2aee4eb76e135c0b524a2e7789499fd26ab9b587
|
4
|
+
data.tar.gz: 0dac1c644c9fdf0a6f7b72fd93dd012d452753a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8422bfbcd02da7e99a25499f0fafa7a9fbb5bf215e1475343ac4e154fadbf02cd28aa32a41436e26f683cb68103f7525aba4d017ebd0e47546ed582b57b40d6e
|
7
|
+
data.tar.gz: 6b04cd0250f1aad93b99fffe86ab455f01172ac0072222c36e0a20f07be0853690a51b33d26d4036cb1ea5a8fe98fb13da4f7288e6f165df401c91f894f4306a
|
data/lib/forwardable/extended.rb
CHANGED
@@ -8,26 +8,30 @@ require "forwardable"
|
|
8
8
|
module Forwardable
|
9
9
|
module Extended
|
10
10
|
DEF_DELEGATOR = Object::Forwardable.instance_method(:def_delegator)
|
11
|
-
def def_hash_delegator(hash, method, key: method, bool: false,
|
11
|
+
def def_hash_delegator(hash, method, key: method, bool: false, wrap: false)
|
12
12
|
prefix = (bool == :reverse ? "!!!" : "!!") if bool
|
13
|
+
wrap = "self.class.new" if wrap.is_a?(TrueClass)
|
14
|
+
wrap = wrap ? "#{wrap} " : ""
|
13
15
|
suffix = (bool ? "?" : "")
|
14
16
|
|
15
17
|
class_eval <<-STR, __FILE__, __LINE__
|
16
18
|
def #{method}#{suffix}
|
17
|
-
#{prefix}#{hash}[#{key.inspect}]
|
19
|
+
#{wrap}#{prefix}#{hash}[#{key.inspect}]
|
18
20
|
end
|
19
21
|
STR
|
20
22
|
end
|
21
23
|
|
22
24
|
#
|
23
25
|
|
24
|
-
def def_ivar_delegator(ivar, alias_ = ivar, bool: false,
|
26
|
+
def def_ivar_delegator(ivar, alias_ = ivar, bool: false, wrap: false)
|
25
27
|
prefix = (bool == :reverse ? "!!!" : "!!") if bool
|
28
|
+
wrap = "self.class.new" if wrap.is_a?(TrueClass)
|
29
|
+
wrap = wrap ? "#{wrap} " : ""
|
26
30
|
suffix = (bool ? "?" : "")
|
27
31
|
|
28
32
|
class_eval <<-STR, __FILE__, __LINE__
|
29
33
|
def #{alias_.to_s.gsub(/\A@/, "")}#{suffix}
|
30
|
-
#{prefix}#{ivar}
|
34
|
+
#{wrap}#{prefix}#{ivar}
|
31
35
|
end
|
32
36
|
STR
|
33
37
|
end
|
@@ -44,8 +48,9 @@ module Forwardable
|
|
44
48
|
|
45
49
|
elsif kwd[:type]
|
46
50
|
raise ArgumentError, "Alias not supported with type; the method is the alias" if alias_ != method
|
47
|
-
send("def_#{kwd[:type]}_delegator",
|
48
|
-
|
51
|
+
send("def_#{kwd[:type]}_delegator", accessor, method, **kwd.tap { |obj|
|
52
|
+
obj.delete(:type)
|
53
|
+
})
|
49
54
|
|
50
55
|
else
|
51
56
|
def_modern_delegator(
|
@@ -56,14 +61,16 @@ module Forwardable
|
|
56
61
|
|
57
62
|
#
|
58
63
|
|
59
|
-
def def_modern_delegator(accessor, method, alias_ = method, args: [], bool: false)
|
60
|
-
prefix = (bool == :reverse ? "!!!" : "!!") if bool
|
64
|
+
def def_modern_delegator(accessor, method, alias_ = method, args: [], bool: false, wrap: false)
|
61
65
|
args = [args].flatten.compact.map(&:to_s).unshift("").join(", ")
|
66
|
+
prefix = (bool == :reverse ? "!!!" : "!!") if bool
|
67
|
+
wrap = "self.class.new" if wrap.is_a?(TrueClass)
|
68
|
+
wrap = wrap ? "#{wrap} " : ""
|
62
69
|
suffix = (bool ? "?" : "")
|
63
70
|
|
64
71
|
class_eval <<-STR, __FILE__, __LINE__
|
65
72
|
def #{alias_}#{suffix}(*args, &block)
|
66
|
-
#{prefix}#{accessor}.send(#{method.inspect}#{args + ", *args"}, &block)
|
73
|
+
#{wrap}#{prefix}#{accessor}.send(#{method.inspect}#{args + ", *args"}, &block)
|
67
74
|
end
|
68
75
|
STR
|
69
76
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: forwardable-extended
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordon Bedwell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Forwardable with hash, and instance variable extensions.
|
14
14
|
email:
|