Skip to content

Instantly share code, notes, and snippets.

@moro
Created July 11, 2012 04:48
Show Gist options
  • Save moro/3088087 to your computer and use it in GitHub Desktop.
Save moro/3088087 to your computer and use it in GitHub Desktop.
Hash#nested_fetch
module NestedFetch
def nested_fetch(*keys)
keys.inject(self) do |hash, key|
(v = hash[key]).nil? ? break : v
end
end
end
Hash.class_eval { include NestedFetch }
h = {
info: {
user: {
name: 'moro',
}
}
}
h.nested_fetch(:info, :user, :name) # => "moro"
h.nested_fetch(:info, :user) # => {:name=>"moro"}
h.nested_fetch(:info, :user, :email) # => nil
h.nested_fetch(:foo, :bar) # => nil
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment