Module: TogoStanza::Stanza::Grouping
- Included in:
- Base
- Defined in:
- lib/togostanza/stanza/grouping.rb
Class Method Summary collapse
Class Method Details
._grouping(rows, *keys) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/togostanza/stanza/grouping.rb', line 13 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 |
.grouping(rows, *keys) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/togostanza/stanza/grouping.rb', line 5 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 |