forwardablex 0.1.0 → 0.1.1

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.
data/HISTORY.md ADDED
@@ -0,0 +1,9 @@
1
+ # History of ForwardableX
2
+
3
+ ## 0.1.1
4
+
5
+ * Introduced receiver keyword :class for forwarding to class method
6
+
7
+ ## 0.1.0
8
+
9
+ First release.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # forwardablex
1
+ # ForwardableX
2
2
 
3
- forwardablex is a ruby library to extend forwardable.rb.
3
+ ForwardableX is a Ruby library to extend forwardable.rb.
4
4
 
5
5
  ## Installation
6
6
 
@@ -49,15 +49,15 @@ class Forwarder
49
49
  def m
50
50
  "forwarded"
51
51
  end
52
- end
53
- forward self, :m
52
+ end
53
+ forward :class, :m
54
54
  end
55
55
  Forwarder.new.m #=> "forwarded"
56
56
  ```
57
57
 
58
58
  ## Licence
59
59
 
60
- forwardablex is free software distributed under MIT licence.
60
+ ForwardableX is free software distributed under MIT licence.
61
61
 
62
62
  ## Contributing
63
63
 
data/lib/forwardablex.rb CHANGED
@@ -38,7 +38,7 @@ require "forwardablex/version"
38
38
  # "forwarded"
39
39
  # end
40
40
  # end
41
- # forward self, :m
41
+ # forward :class, :m
42
42
  # end
43
43
  # Forwarder.new.m #=> "forwarded"
44
44
  module ForwardableX
@@ -56,6 +56,10 @@ module ForwardableX
56
56
  context = self.kind_of?(Module) ? self : self.singleton_class
57
57
  context.instance_eval do
58
58
  case receiver
59
+ when :class
60
+ define_method(name) do |*args, &b|
61
+ self.class.__send__(method, *args, &b)
62
+ end
59
63
  when Symbol, String
60
64
  define_method(name) do |*args, &b|
61
65
  instance_variable_get(receiver).__send__(method, *args, &b)
@@ -1,4 +1,4 @@
1
1
  module ForwardableX
2
2
  # version of ForwardableX
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
@@ -87,6 +87,24 @@ singletonforwarder = Forwarder.new("singletonforwarder").tap do |obj|
87
87
  obj.def_singleton_delegators Receiver.new, :m8, :m9
88
88
  end
89
89
 
90
+ class ClassMethodForwarder
91
+ class << self
92
+ def m
93
+ "forwarded"
94
+ end
95
+ end
96
+
97
+ forward :class, :m
98
+ end
99
+
100
+ class ClassMethodForwarderA < ClassMethodForwarder
101
+ class << self
102
+ def m
103
+ "forwarded to A"
104
+ end
105
+ end
106
+ end
107
+
90
108
  describe 'ForwardableX' do
91
109
  [ XForwarder.new,
92
110
  DefDelegatorForwarder.new,
@@ -115,4 +133,9 @@ describe 'ForwardableX' do
115
133
  end
116
134
  end
117
135
  end
136
+
137
+ it 'should forward to class' do
138
+ ClassMethodForwarder.new.m.should == "forwarded"
139
+ ClassMethodForwarderA.new.m.should == "forwarded to A"
140
+ end
118
141
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forwardablex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-03 00:00:00.000000000 Z
12
+ date: 2013-04-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bacon
@@ -68,6 +68,7 @@ extra_rdoc_files: []
68
68
  files:
69
69
  - .gitignore
70
70
  - Gemfile
71
+ - HISTORY.md
71
72
  - LICENSE.txt
72
73
  - README.md
73
74
  - Rakefile