forwardable-extended 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: {}