Feature #4978
closedforwardable: support for 'delegate :method => :accessor'
Description
Hello,
A few months ago, I met a bug with lib/forwardable.rb:
delegate :method => :accessor
would not work, although mentioned in the documentation.
Keiju solved this at r31507, being faster than me :)
However, I would still like to propose my solution.
#instance_delegate and #single_delegate both accept
a Symbol-Symbol pair (:method => :accessor)
and a Array-Symbol pair ([:method1, :method2] => :accessor).
The current code looks like:
methods = [methods] unless methods.respond_to?(:each)
methods.each{ |method|
def_instance_delegator(accessor, method)
}
I propose:
Array(methods).each{ |method|
def_instance_delegator(accessor, method)
}
I believe this is a good use for Kernel#Array, and it does not depend on #each being defined on Symbol/String.
While I am at it, I would like to advise to not use the fact String#each for a single line String used to yield the whole String.
This is likely not what #each is intended for, and broke with 1.9, which undefined String#each.
I began to write a few tests for forwardable, is it better to add them in test/ or RubySpec ?
Files
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
- Status changed from Open to Assigned
- Assignee set to keiju (Keiju Ishitsuka)
I believe this is new feature, not bug. However if Keiju will accept and commit it before preview1, I have no objection.
Otherwise I'll change it 'Feature' for 1.9.4. I'm sorry this is very short time limit, but the proposal seems too late.
Thanks.
Updated by Eregon (Benoit Daloze) over 13 years ago
Motohiro KOSAKI wrote:
I believe this is new feature, not bug. However if Keiju will accept and commit it before preview1, I have no objection.
Otherwise I'll change it 'Feature' for 1.9.4. I'm sorry this is very short time limit, but the proposal seems too late.Thanks.
My mistake, I meant it as a feature.
The delay is fine, this is not urgent at all (but I'd like feedback from Keiji one day).
Thanks for looking in this issue.
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
- Tracker changed from Bug to Feature
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
- Target version changed from 1.9.3 to 2.0.0
Updated by ko1 (Koichi Sasada) about 12 years ago
- Target version changed from 2.0.0 to 2.6
I changed target to next minor because no discussion.
Updated by Eregon (Benoit Daloze) about 10 years ago
- Status changed from Assigned to Rejected
No discussion and the current code works fine while the new one has unlikely but possible compatibility issues.
Therefore I close it.