forwardable-extended 2.1.0 → 2.2.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: 4ae6e9add3adb8d683178c3a41637a72a0410f9d
4
- data.tar.gz: da1443e1b70f5ed9bd8cc5811c7194efdc45a9d4
3
+ metadata.gz: 2aee4eb76e135c0b524a2e7789499fd26ab9b587
4
+ data.tar.gz: 0dac1c644c9fdf0a6f7b72fd93dd012d452753a3
5
5
  SHA512:
6
- metadata.gz: a3a0455ae2671bd4526521fd21aa890e7134c344ab15e0ceec8c6aa5da649f6c118c084697c3485aed089eb57bd8878cb696af5d788f641e847faf0a01df5462
7
- data.tar.gz: 61b3f52eaa770f3a460e4f64be8619b4fa9e44da1a5dca3fa837c8f5579f1ecd7ee23e762facda146d9c57c38158f9db2be8888aa8e0fb3a579419cfa88f5657
6
+ metadata.gz: 8422bfbcd02da7e99a25499f0fafa7a9fbb5bf215e1475343ac4e154fadbf02cd28aa32a41436e26f683cb68103f7525aba4d017ebd0e47546ed582b57b40d6e
7
+ data.tar.gz: 6b04cd0250f1aad93b99fffe86ab455f01172ac0072222c36e0a20f07be0853690a51b33d26d4036cb1ea5a8fe98fb13da4f7288e6f165df401c91f894f4306a
@@ -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, type: :ivar)
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, type: :ivar)
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
- accessor, method, **kwd)
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
@@ -4,6 +4,6 @@
4
4
 
5
5
  module Forwardable
6
6
  module Extended
7
- VERSION = "2.1.0"
7
+ VERSION = "2.2.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: 2.1.0
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-13 00:00:00.000000000 Z
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: