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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02ba0e024964bbc8dd125981a805d601f2d3392e
4
- data.tar.gz: cac96d2b17ff585c8cfbe6a9b3c5ca4a82e2d747
3
+ metadata.gz: 4793f206fb4d2244f04cf4a4be8a65f46cce54de
4
+ data.tar.gz: d86c5074e45837f313b1ba589a3602d0ff75a87b
5
5
  SHA512:
6
- metadata.gz: 4793f596b87fe6e0e5c77f94227ba388ec73fe51debe5c901cf279414cff5c7629236b16f95e699275ec7c9e1b965247425af0e1977da51851717bf5292b7509
7
- data.tar.gz: cf5b23ee25cb1bd54a8155b18a08b1332af7c3c55fee11fdb6fd80a30c448134fe9c4534a8d7f016bf91ab3137824bfa9c4f4af3d8a58ebfac457bf982386ef8
6
+ metadata.gz: 05057e477d66c3f5a79a0a8cc2e068a2880fa8638266d5f2acd66687724822531d30d536f3cded00ebe24180831a11c1651beedeb4791d376cb25aaa2ae0605c
7
+ data.tar.gz: cf72c2bdddf1f8ab4510a4a474b08812b1beb39f1d327913d0e8f61e6b3bb4341ffd817ea2ffb38574c1853da49af8bdade18575d36694bae81f247136e6844d
@@ -7,47 +7,50 @@ require "forwardable"
7
7
 
8
8
  module Forwardable
9
9
  module Extended
10
- include Forwardable
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
- def def_hash_delegator(hash, *methods, key: nil, bool: false, revbool: false)
13
- line = __LINE__ - 1
14
- file = __FILE__
22
+ #
15
23
 
16
- [methods].flatten.each do |method|
17
- prefix = bool || revbool ? "!!#{"!" if revbool}" : ""
18
- var = key ? %(#{hash}["#{key}"]) : %(#{hash}["#{method}"])
19
- method = method.to_s + "?" if revbool || bool
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
- ruby = <<-STR
22
- def #{method}
23
- #{prefix}#{var}
24
- end
25
- STR
35
+ #
26
36
 
27
- class_eval ruby, file, line
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
- def def_ivar_delegator(var, method, bool: false, revbool: false)
32
- line = __LINE__ - 1
33
- file = __FILE__
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
- prefix = revbool || bool ? "!!#{"!" if revbool}" : ""
36
- method = method.to_s + "?" if revbool || bool
37
- ruby = <<-STR
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
@@ -4,6 +4,6 @@
4
4
 
5
5
  module Forwardable
6
6
  module Extended
7
- VERSION = "1.0.0"
7
+ VERSION = "2.0.0"
8
8
  end
9
9
  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: 1.0.0
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-09 00:00:00.000000000 Z
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-forwardable
25
+ homepage: http://github.com/envygeeks/forwardable-extended
26
26
  licenses:
27
27
  - MIT
28
28
  metadata: {}