Issue #1400 has been updated by Yusuke Endoh.

Assignee changed from Yukihiro Matsumoto to Marc-Andre Lafortune

Hello,

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__.

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.  For other topics, please register bug ticket for each.

-- 
Yusuke Endoh <mame / tsg.ne.jp>
----------------------------------------
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/