From: shevegen@... Date: 2018-10-16T05:18:14+00:00 Subject: [ruby-core:89413] [Ruby trunk Feature#15225] OpenStruct: Recursively converting child Hash objects to OpenStruct objects. Issue #15225 has been updated by shevegen (Robert A. Heiler). My apologies; I wasn't quite fully awake when I wrote my above comment since, obviously, easy "creation of ad-hoc methods" is a characteristic trait of struct/openstruct already (not sure why I somewhat forgot this; guess I have not used these two for a while), so please disregard some of my above comment accordingly It may still be worthwhile to have a pattern that may be used for classes, e. g. a module that may extend this functionality onto different classes - but this may be for another suggestion altogether rather than distract from what the author of the issue request here. ---------------------------------------- Feature #15225: OpenStruct: Recursively converting child Hash objects to OpenStruct objects. https://bugs.ruby-lang.org/issues/15225#change-74453 * 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: