On Mon, Jan 22, 2007 at 10:15:09AM +0900, Robert MannI wrote:
> Hello!
> 
> 
> I am wondering if the mighty ruby crowd has a brilliant idea for a tricky
> problem I am solving.
> 
> I need to store a path as a tree in a hash.
> 
> Given:
> a/b/c
> 
> I want the Hash:
> { 'a' => { 'b' => { 'c' => { } } } }
> or written differently
> hsh['a']['b']['c'] = {}
> 
> Is there an elegant solution to this, without maybe looping or eval'ing too
> much?
> 
path = "a/b/c"

def hashify_path( s )
  if s =~ %r{\A[^/]*\z}
    { s => {} }
  elsif s =~ %r{\A([^/]*)/(.*)\z}
    { $1 => hashify_path( $2 ) }
  else
    raise ArgumentError, "Invalid path"
  end
end

p hashify_path( path )
    
prints: 
{"a"=>{"b"=>{"c"=>{}}}}
> 
> 
> Muchas Gracias Senoritas,
> Robert Mannl