From 3785d2675abf2e4aca07e89596ea6f12b4c474a5 Mon Sep 17 00:00:00 2001 From: marcandre Date: Sun, 28 Oct 2012 21:19:50 +0000 Subject: * lib/ostruct.rb: Also accept {Open}Struct as argument to new [ruby-core:47476] [Feature #7007] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37375 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/ostruct.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'lib/ostruct.rb') diff --git a/lib/ostruct.rb b/lib/ostruct.rb index 8fc3de6e72..17b3ab05e2 100644 --- a/lib/ostruct.rb +++ b/lib/ostruct.rb @@ -74,7 +74,8 @@ class OpenStruct # Creates a new OpenStruct object. By default, the resulting OpenStruct # object will have no attributes. # - # The optional +hash+, if given, will generate attributes and values. + # The optional +hash+, if given, will generate attributes and values + # (can be a Hash, an OpenStruct or a Struct). # For example: # # require 'ostruct' @@ -86,8 +87,9 @@ class OpenStruct def initialize(hash=nil) @table = {} if hash - for k,v in hash - @table[k.to_sym] = v + hash.each_pair do |k, v| + k = k.to_sym + @table[k] = v new_ostruct_member(k) end end -- cgit v1.2.3