Sha256: 567704b8ced354ea3944507dc946b53fe877091d01752411c9b0ed34e34f9da9
Contents?: true
Size: 600 Bytes
Versions: 31
Compression:
Stored size: 600 Bytes
Contents
module TogoStanza::Stanza module Grouping module_function def grouping(rows, *keys) normalized_keys = keys.inject([]) {|acc, key| acc + (key.is_a?(Hash) ? key.to_a : [[key, key]]) } _grouping(rows, *normalized_keys) end def _grouping(rows, *keys) (k1, a1), (k2, a2) = keys return rows.map {|row| row[k1] } if keys.size == 1 rows.group_by {|row| k1.is_a?(Array) ? row.values_at(*k1) : row[k1] }.map {|vs, rs| { a1 => vs, a2 => _grouping(rs, *keys.drop(1)) } } end end end
Version data entries
31 entries across 31 versions & 1 rubygems