module PactBroker::HashRefinements

Public Instance Methods

camelcase_keys() click to toggle source
# File lib/pact_broker/hash_refinements.rb, line 36
def camelcase_keys
  camelcase_keys_private(self)
end
camelcase_keys_private(params) click to toggle source
# File lib/pact_broker/hash_refinements.rb, line 61
def camelcase_keys_private(params)
  case params
  when Hash
    params.inject({}) do |result, (key, value)|
      snake_key = case key
                  when String then key.camelcase
                  when Symbol then key.to_s.camelcase.to_sym
                  else
                    key
                  end
      result.merge(snake_key => camelcase_keys_private(value))
    end
  when Array
    params.collect { |value| camelcase_keys_private(value) }
  else
    params
  end
end
deep_merge(other_hash, &block) click to toggle source
# File lib/pact_broker/hash_refinements.rb, line 8
def deep_merge(other_hash, &block)
  block_actual = Proc.new {|key, oldval, newval|
    newval = block.call(key, oldval, newval) if block_given?
      [oldval, newval].all? {|v| v.is_a?(Hash)} ? oldval.merge(newval, &block_actual) : newval
  }
  merge(other_hash, &block_actual)
end
slice(*keys) click to toggle source
# File lib/pact_broker/hash_refinements.rb, line 28
def slice(*keys)
  keys.each_with_object(Hash.new) { |k, hash| hash[k] = self[k] if has_key?(k) }
end
snakecase_keys() click to toggle source
# File lib/pact_broker/hash_refinements.rb, line 24
def snakecase_keys
  snakecase_keys_private(self)
end
snakecase_keys_private(params) click to toggle source
# File lib/pact_broker/hash_refinements.rb, line 42
def snakecase_keys_private(params)
  case params
  when Hash
    params.inject({}) do |result, (key, value)|
      snake_key = case key
                  when String then key.snakecase
                  when Symbol then key.to_s.snakecase.to_sym
                  else
                    key
                  end
      result.merge(snake_key => snakecase_keys_private(value))
    end
  when Array
    params.collect { |value| snakecase_keys_private(value) }
  else
    params
  end
end
stringify_keys() click to toggle source
# File lib/pact_broker/hash_refinements.rb, line 20
def stringify_keys
  stringify_keys_private(self)
end
stringify_keys_private(params) click to toggle source
# File lib/pact_broker/hash_refinements.rb, line 93
def stringify_keys_private(params)
  case params
  when Hash
    params.inject({}) do |result, (key, value)|
      result.merge(key.to_s => symbolize_keys_private(value))
    end
  when Array
    params.collect { |value| symbolize_keys_private(value) }
  else
    params
  end
end
symbolize_keys() click to toggle source
# File lib/pact_broker/hash_refinements.rb, line 16
def symbolize_keys
  symbolize_keys_private(self)
end
symbolize_keys_private(params) click to toggle source
# File lib/pact_broker/hash_refinements.rb, line 80
def symbolize_keys_private(params)
  case params
  when Hash
    params.inject({}) do |result, (key, value)|
      result.merge(key.to_sym => symbolize_keys_private(value))
    end
  when Array
    params.collect { |value| symbolize_keys_private(value) }
  else
    params
  end
end
without(*keys) click to toggle source
# File lib/pact_broker/hash_refinements.rb, line 32
def without(*keys)
  reject { |k,_| keys.include?(k) }
end