Parent

Methods

Class/Module Index [+]

Quicksearch

Array

a method # that walks an array in groups, pass a block to call the block on each sub array

Public Instance Methods

in_groups_of(chunk_size, padded_with=nil, &block) click to toggle source
# File lib/mcollective/monkey_patches.rb, line 29
def in_groups_of(chunk_size, padded_with=nil, &block)
  arr = self.clone

  # how many to add
  padding = chunk_size - (arr.size % chunk_size)

  # pad at the end
  arr.concat([padded_with] * padding) unless padding == chunk_size

  # how many chunks we'll make
  count = arr.size / chunk_size

  # make that many arrays
  result = []
  count.times {|s| result <<  arr[s * chunk_size, chunk_size]}

  if block_given?
    result.each_with_index do |a, i|
      case block.arity
        when 1
          yield(a)
        when 2
          yield(a, (i == result.size - 1))
        else
          raise "Expected 1 or 2 arguments, got #{block.arity}"
      end
    end
  else
    result
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.