forwardable-extended 2.5.1 → 2.5.3

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: 0d5aed814c3decffc3f50dd22a903b23a060b866
4
- data.tar.gz: 72e91d21748efa61877a3696b56e8fda9047f810
3
+ metadata.gz: 9d90dc39d0f23f0acbfa3fb0563db755d1c898f0
4
+ data.tar.gz: ff31cfc71354d276f702baffd3289cd5d9b2e8a8
5
5
  SHA512:
6
- metadata.gz: 40a1367c97c4c223105a1521afcf9958b1fe62a375ca790bc4d73d149291e91fd02213fe80bbe01320646629cdeaec595ea7612ac9e6da2e2ce271a6c7fd8781
7
- data.tar.gz: 6fd5c54db29c9dcd2226dce80f7f500f0d909540b657335eb81bed68f7be1ae1bcfa2c4d272fba05b33c34012171ef56fb38429b3229847fef696fc7eedb2c47
6
+ metadata.gz: 8ac56d19ae6529f9502925b38d919525f66183db7f4ea1ae0a766748aeee4e413d8b9d5137318ca7a956e5f6a5860f4ad325d30746d1618fd339dc29ff02351c
7
+ data.tar.gz: 1c0eecff649dd33ea319a14aff83814718b1dc46cbc76728ac2a4b513217b64751a703056c35afac8d5bd42210003a89b83ba55183cb3056a3e3029ab022b32e
data/Gemfile CHANGED
@@ -1,6 +1,8 @@
1
+ # ----------------------------------------------------------------------------
1
2
  # Frozen-string-literal: true
2
3
  # Copyright: 2015-2016 Jordon Bedwell - MIT License
3
4
  # Encoding: utf-8
5
+ # ----------------------------------------------------------------------------
4
6
 
5
7
  source "https://rubygems.org"
6
8
  gem "rake", :require => false
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
+ # ----------------------------------------------------------------------------
1
2
  # Frozen-string-literal: true
2
3
  # Copyright: 2015-2016 Jordon Bedwell - MIT License
3
4
  # Encoding: utf-8
5
+ # ----------------------------------------------------------------------------
4
6
 
5
7
  $LOAD_PATH.unshift(File.expand_path("../lib", __FILE__))
6
8
  require "luna/rubocop/rake/task"
@@ -1,6 +1,8 @@
1
+ # ----------------------------------------------------------------------------
1
2
  # Frozen-string-literal: true
2
3
  # Copyright: 2015-2016 Jordon Bedwell - MIT License
3
4
  # Encoding: utf-8
5
+ # ----------------------------------------------------------------------------
4
6
 
5
7
  require "forwardable/extended/version"
6
8
  require "forwardable"
@@ -8,9 +10,10 @@ require "forwardable"
8
10
  module Forwardable
9
11
  module Extended
10
12
 
13
+ # ------------------------------------------------------------------------
11
14
  # Make our methods private on the class, there is no reason for public.
12
- # This makes it so that things are cleaner to view when inside of REPL's/Debuggers.
13
- # That way you don't see our methods without asking to see them.
15
+ # ------------------------------------------------------------------------
16
+
14
17
  def self.extended(klass)
15
18
  instance_methods.each do |method|
16
19
  klass.private_class_method(
@@ -19,10 +22,10 @@ module Forwardable
19
22
  end
20
23
  end
21
24
 
25
+ # ------------------------------------------------------------------------
22
26
  # Delegate using a Rails-like interface.
23
- # to - the class (object) you are delegating to.
24
- # alias_of - the method of the class (by default it's the method.)
25
- # method - the method you are forwarding.
27
+ # ------------------------------------------------------------------------
28
+
26
29
  def rb_delegate(method, to: nil, alias_of: method, **kwd)
27
30
  raise ArgumentError, "to must be provided" unless to
28
31
  def_delegator(
@@ -30,10 +33,10 @@ module Forwardable
30
33
  )
31
34
  end
32
35
 
36
+ # ------------------------------------------------------------------------
33
37
  # Delegate a method to a hash and key.
34
- # key - the key to use if the method is not the key.
35
- # method - the name of the method you wish to create.
36
- # hash - the hash you are delegating to.
38
+ # ------------------------------------------------------------------------
39
+
37
40
  def def_hash_delegator(hash, method, key: method, **kwd)
38
41
  prefix, suffix, wrap = prepare_delegate(**kwd)
39
42
 
@@ -61,10 +64,10 @@ module Forwardable
61
64
  STR
62
65
  end
63
66
 
67
+ # ------------------------------------------------------------------------
64
68
  # Delegate a method to an instance variable.
65
- # ivar - the instance variable you are aliasing.
66
- # alias_ - alias it to another method name.
67
- # Note: If you are not doing booleans then don't bother with this.
69
+ # ------------------------------------------------------------------------
70
+
68
71
  def def_ivar_delegator(ivar, alias_ = ivar, **kwd)
69
72
  prefix, suffix, wrap = prepare_delegate(**kwd)
70
73
 
@@ -92,11 +95,10 @@ module Forwardable
92
95
  STR
93
96
  end
94
97
 
95
- # method - the method you wish to delegate.
96
- # alias_ - the name of the method on the current object.
97
- # args - arguments to pass to the method. Note: these are inspected.
98
+ # ------------------------------------------------------------------------
98
99
  # Like def_delegator but allows you to send args and do other stuff.
99
- # accessor - the object you wish to delegate to.
100
+ # ------------------------------------------------------------------------
101
+
100
102
  def def_modern_delegator(accessor, method, alias_ = method, args: [], **kwd)
101
103
  args = [args].flatten.compact.map(&:to_s).unshift("").join(", ")
102
104
  prefix, suffix, wrap = prepare_delegate(**kwd)
@@ -125,7 +127,10 @@ module Forwardable
125
127
  STR
126
128
  end
127
129
 
130
+ # ------------------------------------------------------------------------
128
131
  # Wraps around traditional delegation and modern delegation.
132
+ # ------------------------------------------------------------------------
133
+
129
134
  def def_delegator(accessor, method, alias_ = method, **kwd)
130
135
  kwd, alias_ = alias_, method if alias_.is_a?(Hash) && !kwd.any?
131
136
 
@@ -146,7 +151,10 @@ module Forwardable
146
151
  end
147
152
  end
148
153
 
154
+ # ------------------------------------------------------------------------
149
155
  # Create multiple delegates at once.
156
+ # ------------------------------------------------------------------------
157
+
150
158
  def def_delegators(accessor, *methods)
151
159
  kwd = methods.shift if methods.first.is_a?(Hash)
152
160
  kwd = methods.pop if methods. last.is_a?(Hash)
@@ -157,10 +165,12 @@ module Forwardable
157
165
  end
158
166
  end
159
167
 
168
+ # ------------------------------------------------------------------------
160
169
  # Prepares a delegate and it's few arguments.
161
- # wrap - whether to wrap (or the class to wrap it with.)
162
- # bool - whether or not this delegate is a boolean.
163
- private def prepare_delegate(wrap: nil, bool: false)
170
+ # ------------------------------------------------------------------------
171
+
172
+ private
173
+ def prepare_delegate(wrap: nil, bool: false)
164
174
  prefix = (bool == :reverse ? "!!!" : "!!") if bool
165
175
  wrap = "self.class.new" if wrap.is_a?(TrueClass)
166
176
  suffix = "?" if bool
@@ -4,6 +4,6 @@
4
4
 
5
5
  module Forwardable
6
6
  module Extended
7
- VERSION = "2.5.1"
7
+ VERSION = "2.5.3"
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.5.1
4
+ version: 2.5.3
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-03-17 00:00:00.000000000 Z
11
+ date: 2016-03-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Forwardable with hash, and instance variable extensions.
14
14
  email:
@@ -42,7 +42,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
42
42
  version: '0'
43
43
  requirements: []
44
44
  rubyforge_project:
45
- rubygems_version: 2.5.1
45
+ rubygems_version: 2.6.2
46
46
  signing_key:
47
47
  specification_version: 4
48
48
  summary: Forwardable with hash, and instance variable extensions.