from django.template import Template, TemplateEncodingError,
StringOrigin, Lexer, Parser
from django.utils.encoding import smart_unicode
class TestableTemplate(Template):
def __init__(self, template_string, origin=None,
name='<Unknown Template>', libraries=[]):
try:
template_string = smart_unicode(template_string)
except UnicodeDecodeError:
raise TemplateEncodingError("Templates can only be
constructed from unicode or UTF-8 strings.")
origin = StringOrigin(template_string)
self.nodelist = my_compile_string(template_string, origin,
libraries)
self.name = name
def my_compile_string(template_string, origin, libraries=[]):
"Compiles template_string into NodeList ready for rendering"
lexer = Lexer(template_string, origin)
parser = Parser(lexer.tokenize())
for lib in libraries:
parser.add_library(lib)
return parser.parse()
Comments