Sha256: 12de3b34cae44f66c7d791b1b73bec9597f97e1c73e98c8223b419635b2251ed
Contents?: true
Size: 901 Bytes
Versions: 1
Compression:
Stored size: 901 Bytes
Contents
class ObjectFlatten class << self def flatten(obj, options = {}) unless obj.is_a?(Hash) raise TypeError, "TypeError: wrong argument type #{obj.class} (expected Hash)" end options = { :separator => '.', }.merge(options) flatten0(nil, obj, options) end private def flatten0(root, obj, options, acc = []) case obj when Array obj.each do |value| flatten0(root, value, options, acc) end when Hash obj.each do |key, value| flatten0(join(root, key, options), value, options, acc) end else acc << {root => obj} end acc end def join(root, key, options) key = key.to_s sep = options[:separator] tr = options[:tr] if tr key = key.tr(*tr) end root ? (root + sep + key) : key end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
object_flatten-0.1.1 | lib/object_flatten/object_flatten.rb |