instance method in_groups_of

Ruby on Rails 2.3.18

Since v2.2.3 Last seen in v2.3.18

Available in: v2.2.3 v2.3.18

Signature

in_groups_of(number, fill_with = nil)

Splits or iterates over the array in groups of size number, padding any remaining slots with fill_with unless it is false.

%w(1 2 3 4 5 6 7).in_groups_of(3) {|group| p group}
["1", "2", "3"]
["4", "5", "6"]
["7", nil, nil]

%w(1 2 3).in_groups_of(2, ' ') {|group| p group}
["1", "2"]
["3", " "]

%w(1 2 3).in_groups_of(2, false) {|group| p group}
["1", "2"]
["3"]

Parameters

number req
fill_with opt = nil
Source
# File activesupport/lib/active_support/core_ext/array/grouping.rb, line 22
        def in_groups_of(number, fill_with = nil)
          if fill_with == false
            collection = self
          else
            # size % number gives how many extra we have;
            # subtracting from number gives how many to add;
            # modulo number ensures we don't add group of just fill.
            padding = (number - size % number) % number
            collection = dup.concat([fill_with] * padding)
          end

          if block_given?
            collection.each_slice(number) { |slice| yield(slice) }
          else
            [].tap do |groups|
              collection.each_slice(number) { |group| groups << group }
            end
          end
        end

Defined in activesupport/lib/active_support/core_ext/array/grouping.rb line 22 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveSupport::CoreExtensions::Array::Grouping

Type at least 2 characters to search.

↑↓ navigate · open · esc close