forwardable-extended 2.0.0 → 2.1.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: 4793f206fb4d2244f04cf4a4be8a65f46cce54de
4
- data.tar.gz: d86c5074e45837f313b1ba589a3602d0ff75a87b
3
+ metadata.gz: 4ae6e9add3adb8d683178c3a41637a72a0410f9d
4
+ data.tar.gz: da1443e1b70f5ed9bd8cc5811c7194efdc45a9d4
5
5
  SHA512:
6
- metadata.gz: 05057e477d66c3f5a79a0a8cc2e068a2880fa8638266d5f2acd66687724822531d30d536f3cded00ebe24180831a11c1651beedeb4791d376cb25aaa2ae0605c
7
- data.tar.gz: cf72c2bdddf1f8ab4510a4a474b08812b1beb39f1d327913d0e8f61e6b3bb4341ffd817ea2ffb38574c1853da49af8bdade18575d36694bae81f247136e6844d
6
+ metadata.gz: a3a0455ae2671bd4526521fd21aa890e7134c344ab15e0ceec8c6aa5da649f6c118c084697c3485aed089eb57bd8878cb696af5d788f641e847faf0a01df5462
7
+ data.tar.gz: 61b3f52eaa770f3a460e4f64be8619b4fa9e44da1a5dca3fa837c8f5579f1ecd7ee23e762facda146d9c57c38158f9db2be8888aa8e0fb3a579419cfa88f5657
data/Gemfile CHANGED
@@ -7,12 +7,15 @@ gem "rake", :require => false
7
7
  gemspec
8
8
 
9
9
  group :test do
10
+ gem "rspec-helpers", :require => false
10
11
  gem "codeclimate-test-reporter", :require => false
12
+ gem "luna-rspec-formatters", :require => false
13
+ gem "rspec", :require => false
11
14
  end
12
15
 
13
16
  group :development do
14
- gem "rspec", :require => false
15
- gem "rspec-helpers", :require => false
16
- gem "luna-rspec-formatters", :require => false
17
- gem "pry", :require => false
17
+ gem "rubocop", :github => "bbatsov/rubocop", :require => false
18
+ gem "pry", {
19
+ :require => false
20
+ }
18
21
  end
@@ -34,21 +34,36 @@ module Forwardable
34
34
 
35
35
  #
36
36
 
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
37
+ def def_delegator(accessor, method, alias_ = method, **kwd)
38
+ kwd, alias_ = alias_, method if alias_.is_a?(Hash) && !kwd.any?
39
+
40
+ if alias_.is_a?(Hash) || !kwd.any?
41
+ DEF_DELEGATOR.bind(self).call(
42
+ accessor, method, alias_
43
+ )
44
+
45
+ elsif kwd[:type]
46
+ 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)
49
+
50
+ else
51
+ def_modern_delegator(
52
+ accessor, method, alias_, **kwd
41
53
  )
42
54
  end
55
+ end
43
56
 
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] ? "?" : "")
57
+ #
58
+
59
+ def def_modern_delegator(accessor, method, alias_ = method, args: [], bool: false)
60
+ prefix = (bool == :reverse ? "!!!" : "!!") if bool
61
+ args = [args].flatten.compact.map(&:to_s).unshift("").join(", ")
62
+ suffix = (bool ? "?" : "")
48
63
 
49
64
  class_eval <<-STR, __FILE__, __LINE__
50
- def #{method}#{suffix}
51
- #{prefix}#{accessor}.send(#{alias_.inspect})
65
+ def #{alias_}#{suffix}(*args, &block)
66
+ #{prefix}#{accessor}.send(#{method.inspect}#{args + ", *args"}, &block)
52
67
  end
53
68
  STR
54
69
  end
@@ -4,6 +4,6 @@
4
4
 
5
5
  module Forwardable
6
6
  module Extended
7
- VERSION = "2.0.0"
7
+ VERSION = "2.1.0"
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forwardable-extended
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordon Bedwell