Skip to content

Instantly share code, notes, and snippets.

@pricees
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pricees/b4b5659d672ba5017136 to your computer and use it in GitHub Desktop.
Save pricees/b4b5659d672ba5017136 to your computer and use it in GitHub Desktop.
Symbolize All The Keys!
#
# Symbolize All The Keys....forreealz
class Hash
def symbolize_keys
inject({}) do |result, (key, v)|
key = key.to_sym rescue key
if v.is_a?(Hash)
result[key] = v.symbolize_keys
else
result[key] = v
end
result
end
end
def symbolize_keys!
self.replace symbolize_keys
end
end
foo = { "foo" => { "bar" => "baz" } }
puts "foo #{foo.inspect}"
puts foo.symbolize_keys
puts "foo.symbolize_keys #{foo.inspect}"
puts foo.symbolize_keys!
puts "foo.symbolize_keys! #{foo.inspect}"
# Output
# foo {"foo"=>{"bar"=>"baz"}}
# {:foo=>{:bar=>"baz"}}
# foo.symbolize_keys {"foo"=>{"bar"=>"baz"}}
# {:foo=>{:bar=>"baz"}}
# foo.symbolize_keys! {:foo=>{:bar=>"baz"}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment