module Augmented::Hashes::Transformable

Public Instance Methods

transform(transforms) click to toggle source
# File lib/augmented/hashes/transformable.rb, line 8
def transform transforms
  Helpers.validate! transforms

  transforms.each_pair.with_object({}) do |(key, procable), new_hash|
    value = self[key]

    if procable.kind_of?(Hash) && value.kind_of?(Hash)
      new_hash[key] = value.transform procable
    elsif value.respond_to? :each
      new_hash[key] = value.map{ |thing| thing.transform procable }
    else
      new_hash[key] = Helpers.make_one_proc(procable).call value
    end
  end
end
transform!(transforms) click to toggle source
# File lib/augmented/hashes/transformable.rb, line 24
def transform! transforms
  Helpers.validate! transforms

  transforms.each_pair do |key, procable|
    value = self[key]

    if procable.kind_of?(Hash) && value.kind_of?(Hash)
      self[key] = value.transform! procable
    elsif value.respond_to? :each
      self[key] = value.each{ |thing| thing.transform! procable }
    else
      self[key] = Helpers.make_one_proc(procable).call value
    end
  end

  self
end