From bf0b3f2a096832a9063f7816dcc14a0607f67271 Mon Sep 17 00:00:00 2001 From: Scott Bahling Date: Sun, 17 Mar 2013 21:26:02 +0100 Subject: initial commit --- panfry/templater.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 panfry/templater.py (limited to 'panfry/templater.py') diff --git a/panfry/templater.py b/panfry/templater.py new file mode 100755 index 0000000..c420a12 --- /dev/null +++ b/panfry/templater.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from jinja2 import Environment, FileSystemLoader + + +class Templater: + ''' Pandoc Template generator. + Creates a template suitible for passing to pandoc for html generation. + + The most prominent feature is adding the custom table of contents + navigator that navigates accross muliple html pages. + + The generator references a jinja2 template file called html5.template + located either in the directory 'templates' under the source path, + or in the directory passed as an option. + ''' + def __init__(self, path): + self.templates_path = path + self.j2 = Environment(loader=FileSystemLoader(self.templates_path), + line_statement_prefix='#') + + def page_template(self, doc, page): + ''' + Returns a new page template for use by pandoc. + + Arguments: + - doc: Panfry.Document. + - page: Panfry.Page from Panfry.Document to generate template for. + ''' + options = dict(toc=doc.toc_links) + options['page'] = unicode(page.htmlfile, "utf8") + options['pdf'] = unicode(doc.pdf_filename) + options['prev'] = u'' + options['next'] = u'' + prevpage = doc.prev_page(page) + nextpage = doc.next_page(page) + if prevpage: + options['prev'] = unicode(prevpage.htmlfile, "utf8") + if nextpage: + options['next'] = unicode(nextpage.htmlfile, "utf8") + + template = self.j2.get_template('html5.template') + + return template.render(options=options).encode('utf-8') -- cgit v1.2.3