From: abhilashmv@... Date: 2018-10-15T15:32:54+00:00 Subject: [ruby-core:89407] [Ruby trunk Feature#15225] OpenStruct: Recursively converting child Hash objects to OpenStruct objects. Issue #15225 has been updated by abhionlyone (Abhilash Reddy). abhionlyone (Abhilash Reddy) wrote: > Currently, OpenStruct allows this: > > ~~~ ruby > person = OpenStruct.new > person.age = 25 > person.name = "Abhilash" > puts person.name # "Abhilash" > ~~~ > > But something like this is not possible: > > ~~~ ruby > person.more_info = {country: "Japan", skills: ["Ruby", "C++"]} > puts person.more_info.country # NoMethodError (undefined method `country' for {:country=>"Japan"}:Hash) > ~~~ > > It will be very helpful if we can provide an option to recursively convert child Hash objects to OpenStruct objects. By default it can be set to false. > > I've done a basic implementation of this and created a PR here: https://github.com/ruby/ostruct/pull/5 > > Please let me know if there are any objections. If this can be accepted, I would like to implement and add test cases for the same. ---------------------------------------- Feature #15225: OpenStruct: Recursively converting child Hash objects to OpenStruct objects. https://bugs.ruby-lang.org/issues/15225#change-74447 * Author: abhionlyone (Abhilash Reddy) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- Currently, OpenStruct allows this: ~~~ ruby person = OpenStruct.new person.age = 25 person.name = "Abhilash" puts person.name # "Abhilash" ~~~ But something like this is not possible: ~~~ ruby person.more_info = {country: "Japan", skills: ["Ruby", "C++"]} puts person.more_info.country # NoMethodError (undefined method `country' for {:country=>"Japan"}:Hash) ~~~ It will be very helpful if we can provide an option to recursively convert child Hash objects to OpenStruct objects. By default it can be set to false. I've done a basic implementation of this and created a PR here: https://github.com/ruby/ostruct/pull/5 Please let me know if there are any objections. If this can be accepted, I would like to add test cases for the same. -- https://bugs.ruby-lang.org/ Unsubscribe: