class Jekyll::Page

Extend Jekyll Page class

Public Instance Methods

build_html_tree(branch, content = false, html = "", level = 0) click to toggle source

Generate html for table of contents

# File lib/jekyll-page_extensions.rb, line 206
def build_html_tree(branch, content = false, html = "", level = 0)
  index = branch.select { |k,v| v.is_a?(String) }
  unless index.empty?
    page = self.site.find_page(path: branch[index.keys.first])
    if content
      html += page.content.gsub(/{{\s*page.title\s*}}/, page.data['title']) unless html.include?(page.content)
    else
      html += "<h#{level+1}><a href=\"#{page.pretty_url}\">#{page.data['title']}</a></h#{level+1}>\n"
    end
    html += "\n"
  end
  branch.each_pair do |k,v|
    html = build_html_tree(v, content, html, level+1) unless v.is_a?(String)
  end
  return html
end
pretty_url() click to toggle source

Wrapper for pretty permalinks

# File lib/jekyll-page_extensions.rb, line 171
def pretty_url
  self.url.gsub(/\/index\..*$/,"")
end
print(sitemap) click to toggle source

Compile one-pager fit for printing, including all sub-pages

printable?() click to toggle source

Helper to filter out auto-generated print views

# File lib/jekyll-page_extensions.rb, line 176
def printable?
  self.url =~ /print\.[a-zA-Z0-9]*$/
end
toc(sitemap) click to toggle source

Render table of contents based on children

# File lib/jekyll-page_extensions.rb, line 200
def toc(sitemap)
  branch = sitemap.branch_down(self.path)
  self.build_html_tree(branch)
end