1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/ostruct.rb: Add OpenStruct#to_h [Feature #6276]

[ref #1400] [rubyspec:9e0250b2fc6f]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
marcandre 2012-04-16 03:16:25 +00:00
parent 1dbe0f0672
commit db66739c7c
2 changed files with 16 additions and 17 deletions

View file

@ -101,32 +101,27 @@ class OpenStruct
end
#
# Provides marshalling support for use by the Marshal library. Returning the
# underlying Hash table that contains the functions defined as the keys and
# the values assigned to them.
# Converts the OpenStruct to a hash with keys representing
# each attribute (as symbols) and their corresponding values
# Example:
#
# require 'ostruct'
# require 'ostruct'
# data = OpenStruct.new("country" => "Australia", :population => 20_000_000)
# data.to_h # => {:country => "Australia", :population => 20000000 }
#
# person = OpenStruct.new
# person.name = 'John Smith'
# person.age = 70
def to_h
@table.dup
end
#
# person.marshal_dump # => { :name => 'John Smith', :age => 70 }
# Provides marshalling support for use by the Marshal library.
#
def marshal_dump
@table
end
#
# Provides marshalling support for use by the Marshal library. Accepting
# a Hash of keys and values which will be used to populate the internal table
#
# require 'ostruct'
#
# event = OpenStruct.new
# hash = { 'time' => Time.now, 'title' => 'Birthday Party' }
# event.marshal_load(hash)
# event.title # => 'Birthday Party'
# Provides marshalling support for use by the Marshal library.
#
def marshal_load(x)
@table = x