class Hash

Public Instance Methods

convert_values(except: [],converter: Rational, convert_empty: false) click to toggle source
# File lib/evoc/hash.rb, line 4
def convert_values(except: [],converter: Rational, convert_empty: false)
  logger.debug "Converter: #{converter}, Hash: #{self}"
  if except.is_a?(Array)
    Hash[self.map {|k, v|  
      if except.include?(k)
        [k,v]
      else
        # don't convert empty fields to avoid side-effects
        # "".to_i is 0 for example
        if convert_empty
          [k, converter.method(converter.to_s).call(v)]
        else
          if v.to_s.empty?
            [k,v]
          else
            [k, converter.method(converter.to_s).call(v)]
          end
        end
      end}]
  else
    raise ArgumentError.new, "Specify an array of keys whose values you don't want to convert"
  end
end
symbolize_keys() click to toggle source

stolen from rails api.rubyonrails.org/classes/Hash.html

# File lib/evoc/hash.rb, line 32
def symbolize_keys
  transform_keys{ |key| key.to_sym rescue key }
end
symbolize_keys!() click to toggle source
# File lib/evoc/hash.rb, line 36
def symbolize_keys!
  transform_keys!{ |key| key.to_sym rescue key }
end
transform_keys() { |key| ... } click to toggle source
# File lib/evoc/hash.rb, line 40
def transform_keys
  return enum_for(:transform_keys) unless block_given?
  result = self.class.new
  each_key do |key|
    result[yield(key)] = self[key]
  end
  result
end
transform_keys!() { |key| ... } click to toggle source
# File lib/evoc/hash.rb, line 49
def transform_keys!
  return enum_for(:transform_keys!) unless block_given?
  keys.each do |key|
    self[yield(key)] = delete(key)
  end
  self
end