forward_to 0.2.0 → 0.4.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 +4 -4
- data/lib/forward_to/version.rb +1 -1
- data/lib/forward_to.rb +35 -8
- metadata +3 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b28ac6a51db0a89c6c59a4a4eff5a72806bfd4103702c6e0416c2aabdab9d20c
|
4
|
+
data.tar.gz: cf0f8c489d4d30e8e7c05373af3551af1f52c984dcc664ff9ddbf28aa828bd17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19a767c6d285fddc05186e16c769eb9d09ffb6dfceceb55d6956e78583a1209822cce576568d45666e595043a9ac9beecf0e98c1ebb4d1e580d23631c72e187c
|
7
|
+
data.tar.gz: 71429d20828ae7b7c12f4eb4bba99b39637418db10f334308690a03fdd06660f4d7b4e192f6c81471263515e5dfa855de147645540f4a5adaeeab1cf6de49f53
|
data/lib/forward_to/version.rb
CHANGED
data/lib/forward_to.rb
CHANGED
@@ -13,25 +13,52 @@ module ForwardTo
|
|
13
13
|
# class MyArray
|
14
14
|
# forward_to :@implementation, :empty?, :size, :[]
|
15
15
|
#
|
16
|
-
# def initialize()
|
17
|
-
# @implementation =
|
16
|
+
# def initialize(a = [])
|
17
|
+
# @implementation = a
|
18
18
|
# end
|
19
19
|
# end
|
20
20
|
#
|
21
21
|
# a = MyArray.new
|
22
22
|
# a.size # -> 0
|
23
|
+
# a.empty? # -> true
|
24
|
+
# a[0] = 1
|
25
|
+
# a[0] # -> 1
|
23
26
|
#
|
24
|
-
# The target of #forward_to can be
|
25
|
-
# to be a symbol
|
27
|
+
# The target of #forward_to can be an attribute or a member variable
|
26
28
|
#
|
27
29
|
def forward_to(target, *methods)
|
28
30
|
for method in Array(methods).flatten
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
31
|
+
case method
|
32
|
+
when /\[\]=/
|
33
|
+
class_eval("def #{method}(*args) #{target}&.#{method}(*args) end")
|
34
|
+
when /=$/
|
35
|
+
class_eval("def #{method}(args) #{target}&.#{method}(args) end")
|
36
|
+
else
|
37
|
+
class_eval("def #{method}(*args, &block) #{target}&.#{method}(*args, &block) end")
|
33
38
|
end
|
34
39
|
end
|
35
40
|
end
|
41
|
+
|
42
|
+
# List #forward_to but also an attr reader method for the member object:
|
43
|
+
#
|
44
|
+
# include ForwardTo
|
45
|
+
#
|
46
|
+
# class MyArray
|
47
|
+
# attr_forward :implementation, :empty?, :size, :[]
|
48
|
+
#
|
49
|
+
# def initialize(a = [])
|
50
|
+
# @implementation = a
|
51
|
+
# end
|
52
|
+
# end
|
53
|
+
#
|
54
|
+
# a = MyArray.new([1, 2, 3])
|
55
|
+
# a.implementation # -> [1, 2, 3]
|
56
|
+
#
|
57
|
+
# The target of #attr_reader should be an attribute
|
58
|
+
#
|
59
|
+
def attr_forward(target, *methods)
|
60
|
+
class_eval("attr_reader :#{target}")
|
61
|
+
forward_to(target, *methods)
|
62
|
+
end
|
36
63
|
end
|
37
64
|
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: forward_to
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claus Rasmussen
|
8
|
-
autorequire:
|
9
8
|
bindir: exe
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies: []
|
13
12
|
description: Simple forwarding of methods
|
14
13
|
email:
|
@@ -32,7 +31,6 @@ licenses: []
|
|
32
31
|
metadata:
|
33
32
|
homepage_uri: https://github.com/clrgit/forward_to
|
34
33
|
source_code_uri: https://github.com/clrgit/forward_to.git
|
35
|
-
post_install_message:
|
36
34
|
rdoc_options: []
|
37
35
|
require_paths:
|
38
36
|
- lib
|
@@ -47,8 +45,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
47
45
|
- !ruby/object:Gem::Version
|
48
46
|
version: '0'
|
49
47
|
requirements: []
|
50
|
-
rubygems_version: 3.
|
51
|
-
signing_key:
|
48
|
+
rubygems_version: 3.6.9
|
52
49
|
specification_version: 4
|
53
50
|
summary: Simple forwarding of methods
|
54
51
|
test_files: []
|