Method: RorHack::ArrayHack#multi_group_by
- Defined in:
- lib/ror_hack/array_hack.rb
#multi_group_by(*keys) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/ror_hack/array_hack.rb', line 3 def multi_group_by(*keys) group_by_block = lambda do |array, ks| key = ks.shift return array unless key if key.is_a? Proc hash = array.group_by(&key) else hash = array.group_by { |i| i[key] } end if ks.present? hash.keys.each do |k| hash[k] = group_by_block.call hash[k], ks.dup end end return hash end group_by_block.call self, keys end |