Sha256: 68484b671555fab14dd34693cc19f7855a2836813aa4e5027e7992b4b894fe17
Contents?: true
Size: 1.45 KB
Versions: 6
Compression:
Stored size: 1.45 KB
Contents
# DataTransformer is a singleton class that walks ruby data structures (nested # hashes, arrays, etc..) and lets you transform them based on values or keys # # NOTE: DataTransformer is not automatically required, but can be when needed. module Volt class DataTransformer # Takes a hash or array, and nested map's over the values, yielding to # the block the value. The return value from the block replaces the # previous value. # NOTE: This does not yield hashes or arrays. def self.transform(data, transform_keys=true, &block) if data.is_a?(Hash) data.map do |key, value| key = transform(key, transform_keys, &block) if transform_keys value = transform(value, transform_keys, &block) [key, value] end.to_h elsif data.is_a?(Array) data.map do |value| transform(value, transform_keys, &block) end else # yield to the trasnformer yield(data) end end # Like #transform, except it only yields keys. def self.transform_keys(data, &block) if data.is_a?(Hash) data.map do |key, value| key = transform_keys(key, &block) value = transform_keys(value, &block) # map the key [yield(key), value] end.to_h elsif data.is_a?(Array) data.map do |value| transform_keys(value, &block) end else # no mapping data end end end end
Version data entries
6 entries across 6 versions & 1 rubygems