Forum: Ruby-core Please add a method to enumerate fields in OpenStruct

Posted by wing (wing blair) (Guest)
on 2012-11-20 07:28
(Received via mailing list)
Issue #1400 has been updated by wing (wing blair).


<a 
href="http://goarticles.com/article/I-Date-Asia-Good-to-... 
rel="dofollow">i date asia</a>
----------------------------------------
Feature #1400: Please add a method to enumerate fields in OpenStruct
https://bugs.ruby-lang.org/issues/1400#change-33170

Author: tpo (Tomas Pospisek)
Status: Closed
Priority: Normal
Assignee: marcandre (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
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.