Class: Middleman::Paginate::Extension

Inherits:
ConfigExtension
  • Object
show all
Defined in:
lib/middleman/paginate/extension.rb

Defined Under Namespace

Classes: CollectionProxyDescriptor, Pager

Instance Method Summary collapse

Instance Method Details

#paginate(collection, base_path, template, per_page: 20, suffix: "/page/:num/index", locals: {}, data: {}, locale: nil) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/middleman/paginate/extension.rb', line 51

def paginate(collection, base_path, template, per_page: 20, suffix: "/page/:num/index", locals: {}, data: {}, locale: nil)
  pages = collection.each_slice(per_page).to_a
  descriptors = []

  pages.each_with_index do |page_collection, i|
    pager = Pager.new(base_path, suffix, i + 1, pages.size, per_page)

    opts = {
      locals: locals.merge(items: page_collection, pager: pager),
      data: data,
      locale: locale
    }

    descriptors << Middleman::Sitemap::Extensions::ProxyDescriptor.new(
      Middleman::Util.normalize_path(pager.full_page_path),
      Middleman::Util.normalize_path(template),
      opts.dup
    )
  end

  CollectionProxyDescriptor.new(descriptors)
end