forwardable-extended 1.0.0 → 2.0.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 +35 -32
- data/lib/forwardable/extended/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4793f206fb4d2244f04cf4a4be8a65f46cce54de
|
|
4
|
+
data.tar.gz: d86c5074e45837f313b1ba589a3602d0ff75a87b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 05057e477d66c3f5a79a0a8cc2e068a2880fa8638266d5f2acd66687724822531d30d536f3cded00ebe24180831a11c1651beedeb4791d376cb25aaa2ae0605c
|
|
7
|
+
data.tar.gz: cf72c2bdddf1f8ab4510a4a474b08812b1beb39f1d327913d0e8f61e6b3bb4341ffd817ea2ffb38574c1853da49af8bdade18575d36694bae81f247136e6844d
|
data/lib/forwardable/extended.rb
CHANGED
|
@@ -7,47 +7,50 @@ require "forwardable"
|
|
|
7
7
|
|
|
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, type: :ivar)
|
|
12
|
+
prefix = (bool == :reverse ? "!!!" : "!!") if bool
|
|
13
|
+
suffix = (bool ? "?" : "")
|
|
14
|
+
|
|
15
|
+
class_eval <<-STR, __FILE__, __LINE__
|
|
16
|
+
def #{method}#{suffix}
|
|
17
|
+
#{prefix}#{hash}[#{key.inspect}]
|
|
18
|
+
end
|
|
19
|
+
STR
|
|
20
|
+
end
|
|
11
21
|
|
|
12
|
-
|
|
13
|
-
line = __LINE__ - 1
|
|
14
|
-
file = __FILE__
|
|
22
|
+
#
|
|
15
23
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
24
|
+
def def_ivar_delegator(ivar, alias_ = ivar, bool: false, type: :ivar)
|
|
25
|
+
prefix = (bool == :reverse ? "!!!" : "!!") if bool
|
|
26
|
+
suffix = (bool ? "?" : "")
|
|
27
|
+
|
|
28
|
+
class_eval <<-STR, __FILE__, __LINE__
|
|
29
|
+
def #{alias_.to_s.gsub(/\A@/, "")}#{suffix}
|
|
30
|
+
#{prefix}#{ivar}
|
|
31
|
+
end
|
|
32
|
+
STR
|
|
33
|
+
end
|
|
20
34
|
|
|
21
|
-
|
|
22
|
-
def #{method}
|
|
23
|
-
#{prefix}#{var}
|
|
24
|
-
end
|
|
25
|
-
STR
|
|
35
|
+
#
|
|
26
36
|
|
|
27
|
-
|
|
37
|
+
def def_delegator(accessor, method, *args)
|
|
38
|
+
if args.empty? || args.size > 1 || !args.first.is_a?(Hash)
|
|
39
|
+
return DEF_DELEGATOR.bind(self).call(
|
|
40
|
+
accessor, method, *args
|
|
41
|
+
)
|
|
28
42
|
end
|
|
29
|
-
end
|
|
30
43
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
44
|
+
return def_ivar_delegator(accessor, method, *args) if args.first[:type] == :ivar
|
|
45
|
+
return def_hash_delegator(accessor, method, *args) if args.first[:type] == :hash
|
|
46
|
+
prefix = (kwd[:bool] == :reverse ? "!!!" : "!!") if kwd[:bool]
|
|
47
|
+
suffix = (kwd[:bool] ? "?" : "")
|
|
34
48
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def #{method}
|
|
39
|
-
#{prefix}#{var}
|
|
49
|
+
class_eval <<-STR, __FILE__, __LINE__
|
|
50
|
+
def #{method}#{suffix}
|
|
51
|
+
#{prefix}#{accessor}.send(#{alias_.inspect})
|
|
40
52
|
end
|
|
41
53
|
STR
|
|
42
|
-
|
|
43
|
-
class_eval ruby, file, line
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def def_ivar_delegators(vars, methods, **kwd)
|
|
47
|
-
raise ArgumentError, "unequal methods and vars" unless vars.size == methods.size
|
|
48
|
-
methods.zip(vars).each do |method, var|
|
|
49
|
-
def_ivar_delegator var, method, **kwd
|
|
50
|
-
end
|
|
51
54
|
end
|
|
52
55
|
end
|
|
53
56
|
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:
|
|
4
|
+
version: 2.0.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-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: Forwardable with hash, and instance variable extensions.
|
|
14
14
|
email:
|
|
@@ -22,7 +22,7 @@ files:
|
|
|
22
22
|
- Rakefile
|
|
23
23
|
- lib/forwardable/extended.rb
|
|
24
24
|
- lib/forwardable/extended/version.rb
|
|
25
|
-
homepage: http://github.com/envygeeks/extended
|
|
25
|
+
homepage: http://github.com/envygeeks/forwardable-extended
|
|
26
26
|
licenses:
|
|
27
27
|
- MIT
|
|
28
28
|
metadata: {}
|