Issue #1400 has been updated by Marc-Andre Lafortune.


Hi,

Yusuke Endoh wrote:
> There is no maintainer for ostruct.
> Marc-Andre, are you willing to be a maintainer and to commit
> your patch?  I give +1 for __members__.

With pleasure. I'll commit it tomorrow.

> I consider Dan's comment is not objection.  What Tomas wants is
> a way to get field names without depending on the openstruct
> internal.  But the ways that Dan proposed are deeply depending
> on it.

Agreed.
--
Marc-André
----------------------------------------
Feature #1400: Please add a method to enumerate fields in OpenStruct
https://bugs.ruby-lang.org/issues/1400

Author: Tomas Pospisek
Status: Assigned
Priority: Normal
Assignee: Marc-Andre Lafortune
Category: lib
Target version: 2.0.0


=begin
 There are two ways to find out what fields an OpenStruct instance has. One is through inspect,
 however that returns a String that needs to be parsed.
 
 The second is by white box engineering, looking at OpenStructs source code and seeing that in
 fact, it has a hash and getting the keys of that hash...
 
 The second way is faster, more robust, but will break once OpenStruct will be re-engineered...
 
 So I suggest to add an explicit method to return a list of fields in an OpenStruct instance:
 
 --- ostruct.rb.old	2009-04-23 15:26:45.000000000 +0200
 +++ ostruct.rb	2009-04-23 15:32:41.000000000 +0200
 @@ -110,6 +110,15 @@
      @table.delete name.to_sym
    end
  
 +  #
 +  # Returns an Array containing the fields of an OpenStruct instance
 +  #
 +  # p record.fields # -> [:age, :pension, :name]
 +  #
 +  def fields
 +    @table.keys
 +  end
 +
    InspectKey = :__inspect_key__ # :nodoc:
  
    #
=end



-- 
http://bugs.ruby-lang.org/