module Cymbal

Convert hash keys to symbols

Public Class Methods

operate(obj, &block) click to toggle source
# File lib/cymbal.rb, line 13
def operate(obj, &block)
  return operate_hash(obj, &block) if obj.is_a? Hash
  return operate_array(obj, &block) if obj.is_a? Array
  obj
end
stringify(obj) click to toggle source
# File lib/cymbal.rb, line 9
def stringify(obj)
  operate(obj, &:to_s)
end
symbolize(obj) click to toggle source
# File lib/cymbal.rb, line 5
def symbolize(obj)
  operate(obj, &:to_sym)
end

Private Class Methods

operate_array(array, &block) click to toggle source
# File lib/cymbal.rb, line 32
def operate_array(array, &block)
  array.map { |item| operate(item, &block) }
end
operate_hash(hash) { |k| ... } click to toggle source
# File lib/cymbal.rb, line 21
def operate_hash(hash, &block)
  hash.each_with_object({}) do |(k, v), o|
    new_key = yield k
    o[new_key] = operate(v, &block)
    if new_key != k && hash.key?(new_key)
      raise ArgumentError, "Key collision in hash: #{new_key}"
    end
    o[new_key] = operate(v, &block)
  end
end