class Bunto::Paginate::Pagination
Public Class Methods
first_page_url(site)
click to toggle source
Static: Fetch the URL of the template page. Used to determine the
path to the first pager in the series.
site - the Bunto::Site object
Returns the url of the template page
# File lib/bunto-paginate/pagination.rb, line 62 def self.first_page_url(site) if page = Pagination.template_page(site) page.url else nil end end
template_page(site)
click to toggle source
Public: Find the Bunto::Page which will act as the pager template
site - the Bunto::Site object
Returns the Bunto::Page which will act as the pager template
# File lib/bunto-paginate/pagination.rb, line 75 def self.template_page(site) site.pages.select do |page| Pager.pagination_candidate?(site.config, page) end.sort do |one, two| two.path.size <=> one.path.size end.first end
Public Instance Methods
generate(site)
click to toggle source
Generate paginated pages if necessary.
site - The Site.
Returns nothing.
# File lib/bunto-paginate/pagination.rb, line 15 def generate(site) if Pager.pagination_enabled?(site) if template = self.class.template_page(site) paginate(site, template) else Bunto.logger.warn "Pagination:", "Pagination is enabled, but I couldn't find " + "an index.html page to use as the pagination template. Skipping pagination." end end end
paginate(site, page)
click to toggle source
Paginates the blog's posts. Renders the index.html file into paginated directories, e.g.: page2/index.html, page3/index.html, etc and adds more site-wide data.
site - The Site. page - The index.html Page that requires pagination.
{“paginator” => { “page” => <Number>,
"per_page" => <Number>, "posts" => [<Post>], "total_posts" => <Number>, "total_pages" => <Number>, "previous_page" => <Number>, "next_page" => <Number> }}
# File lib/bunto-paginate/pagination.rb, line 40 def paginate(site, page) all_posts = site.site_payload['site']['posts'].reject { |post| post['hidden'] } pages = Pager.calculate_pages(all_posts, site.config['paginate'].to_i) (1..pages).each do |num_page| pager = Pager.new(site, num_page, all_posts, pages) if num_page > 1 newpage = Page.new(site, site.source, page.dir, page.name) newpage.pager = pager newpage.dir = Pager.paginate_path(site, num_page) site.pages << newpage else page.pager = pager end end end