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