Project

General

Profile

Feature #15225

OpenStruct: Recursively converting child Hash objects to OpenStruct objects.

Added by abhionlyone (Abhilash Reddy) about 2 years ago. Updated about 2 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:89406]

Description

Currently, OpenStruct allows this:

person = OpenStruct.new
person.age = 25
person.name = "Abhilash"
puts person.name # "Abhilash"

But something like this is not possible:

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.

Also available in: Atom PDF