module Middleman::Pagination::ArrayHelpers

def per_page(per_page)

def per_page(per_page)
  return to_enum(__method__, per_page) unless block_given?
  parts = if per_page.respond_to? :call
    per_page.call(dup)
  else
    each_slice(per_page).reduce([]) do |sum, items|
      sum << items
    end
  end
  num_pages = parts.length
  collection = self
  current_start_i = 0
  parts.each_with_index do |items, i|
    num = i + 1
    meta = ::Middleman::Pagination.page_locals(
      num,
      num_pages,
      collection,
      items,
      current_start_i
    )
    yield items, num, meta, num >= num_pages
    current_start_i += items.length
  end
end