Issue #6056 has been updated by Thomas Sawyer.
Each change should be separate pull request or just a separate commit?
I knew about issue #6029, I was just trying to take care of that a couple of other features while I was involved with the code.
I see what you are saying about ==. I am actually surprised that:
class Q
def to_ary; [1,2,3]; end
end
Q.new == [1,2,3] #=> false
But that being the case, then okay I will remove.
I will also remove .dup from marshal_dump.
I will submit new issue about BasicObject, but briefly, the reason is for of use with #method_missing, to get as many methods out of the way as possible for it's use.
----------------------------------------
Feature #6056: Enhancements to OpenStruct
https://bugs.ruby-lang.org/issues/6056
Author: Thomas Sawyer
Status: Open
Priority: Normal
Assignee: Marc-Andre Lafortune
Category: lib
Target version: 2.0.0
This patch fixes one issue, protecting #new_ostruct_member method, and possibly another by dup'ing marshal_dump, but I need more feedback on the later b/c I've also been told it is not needed.
The rest of this patch provides enhancements to OpenStruct that I feel are sorely needed, these include access via [] and []=, ability to mass update via merge!, minimal polymorphism with Hash and the addition of equality methods, eql? and ==.
https://github.com/ruby/ruby/pull/95
I'd also like opinions on further enhancements:
* adding #each and #each_pair
* making OpenStruct a subclass of BasicObject
--
http://bugs.ruby-lang.org/