Module: Ecoportal::API::Common::GraphQL::HashHelpers::InstanceMethods
- Included in:
- Ecoportal::API::Common::GraphQL::HashHelpers
- Defined in:
- lib/ecoportal/api/common/graphql/hash_helpers.rb
Instance Method Summary collapse
-
#deep_dup(data) ⇒ Object
Based on Rails support.
- #except_keys(value, *keys) ⇒ Object
- #keys_to_s_deep(value) ⇒ Object
- #keys_to_sym_deep(value) ⇒ Object
-
#remove_nil_keys_deep(value, target: []) ⇒ Object
Targetted removal of keys in
target
that arenil
.
Instance Method Details
#deep_dup(data) ⇒ Object
Based on Rails support.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/ecoportal/api/common/graphql/hash_helpers.rb', line 35 def deep_dup(data) case data when Hash data.each_with_object({}) do |(k, v), copy| if k.is_a?(::String) || k.is_a?(::Symbol) copy[k] = deep_dup(v) else copy.delete(k) copy[deep_dup(k)] = deep_dup(v) end end when Enumerable data.map {|d| deep_dup(d)} else data.dup end end |
#except_keys(value, *keys) ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/ecoportal/api/common/graphql/hash_helpers.rb', line 21 def except_keys(value, *keys) return value unless value.is_a?(Hash) deep_dup(value).tap do |out| keys.each {|key| out.delete(key)} end end |
#keys_to_s_deep(value) ⇒ Object
17 18 19 |
# File 'lib/ecoportal/api/common/graphql/hash_helpers.rb', line 17 def keys_to_s_deep(value) transform_keys_deep(value, &:to_s) end |
#keys_to_sym_deep(value) ⇒ Object
13 14 15 |
# File 'lib/ecoportal/api/common/graphql/hash_helpers.rb', line 13 def keys_to_sym_deep(value) transform_keys_deep(value, &:to_sym) end |
#remove_nil_keys_deep(value, target: []) ⇒ Object
Targetted removal of keys in target
that are nil
30 31 32 |
# File 'lib/ecoportal/api/common/graphql/hash_helpers.rb', line 30 def remove_nil_keys_deep(value, target: []) remove_keys_deep_if(value, target: target, &:nil?) end |