I need to generate a Ruby hash that looks like this:
{ "children" => [
{ "children" => [
{ "children" => [
{ "children" => [] }
]}
]}
]}
... for an arbitrary level of nesting. So far the best I've come up with is:
def nested_hash(levels)
return {} if levels < 1
root = { 'children' => [] }
children = root['children']
(levels - 1).times { children = (children << { 'children' => [] }).first['children'] }
root
end
This doesn't seem particularly terse or elegant. Can anyone offer suggestions on making this more terse or elegant?