class Jekyll::Page
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
# File lib/jekyll-page_extensions.rb, line 181 def print(sitemap) branch = sitemap.branch_down(self.path) page = Page.new(self.site, self.site.source, self.pretty_url, "print#{self.ext}") html = "--- layout: print title: #{self.data['title']} --- #{self.content}" html = self.build_html_tree(branch, true, html) modified = !File.exists?(page.path) || File.read(page.path) != html if modified open(page.path, 'w') { |f| f << html } self.site.pages << page end end
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