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

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