Skip to content

Instantly share code, notes, and snippets.

@1997roylee
Created October 6, 2021 08:50
Show Gist options
  • Save 1997roylee/12be09653e56d0bbdf95ff0963eeec17 to your computer and use it in GitHub Desktop.
Save 1997roylee/12be09653e56d0bbdf95ff0963eeec17 to your computer and use it in GitHub Desktop.
# frozen_string_literal: true
module DeepFindHelper
def deep_find(hash, key)
return nil unless hash.is_a?(Hash)
hash.filter do |k, v|
if v.is_a?(Hash)
deep_find(v, key)
else
k == key
end
end
end
module_function :deep_find
refine Hash do
include DeepFindHelper
def deep_find(key)
DeepFindHelper.deep_find(self, key)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment