view piecrust/templating/base.py @ 338:938be93215cb

bake: Improve render context and bake record, fix incremental bake bugs. * Used sources and taxonomies are now stored on a per-render-pass basis. This fixes bugs where sources/taxonomies were used for one pass, but that pass is skipped on a later bake because its result is cached. * Bake records are now created for all pages even when they're not baked. Record collapsing is gone except for taxonomy index pages. * Bake records now also have sub-entries in order to store information about each sub-page, since some sub-pages could use sources/taxonomies differently than others, or be missing from the output. This lets PieCrust handle clean/dirty states on a sub-page level.
author Ludovic Chabant <ludovic@chabant.com>
date Mon, 06 Apr 2015 19:59:54 -0700
parents 28444014ce7d
children 96d363e2da4b
line wrap: on
line source



class TemplateNotFoundError(Exception):
    pass


class TemplatingError(Exception):
    def __init__(self, message, filename=None, lineno=-1):
        super(TemplatingError, self).__init__()
        self.message = message
        self.filename = filename
        self.lineno = lineno

    def __str__(self):
        msg = ''
        if self.filename:
            msg += self.filename
        if self.lineno >= 0:
            msg += ', line %d' % self.lineno
        msg += ': ' + self.message
        return msg


class TemplateEngine(object):
    EXTENSIONS = []

    def initialize(self, app):
        self.app = app

    def renderString(self, txt, data, filename=None, line_offset=0):
        raise NotImplementedError()

    def renderFile(self, paths, data):
        raise NotImplementedError()