From: Ben Darnell Date: Sun, 29 May 2011 23:07:20 +0000 (-0700) Subject: Test template include/extend operations X-Git-Tag: v2.0.0~49 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bced671daa53647bc46d5db2e696ca48c682c6a8;p=thirdparty%2Ftornado.git Test template include/extend operations --- diff --git a/tornado/template.py b/tornado/template.py index 67b173354..465d210dc 100644 --- a/tornado/template.py +++ b/tornado/template.py @@ -195,6 +195,22 @@ class Loader(object): return self.templates[name] +class DictLoader(object): + """A template loader that loads from a dictionary.""" + def __init__(self, dict): + self.dict = dict + self.templates = {} + + def reset(self): + self.templates = {} + + def load(self, name, parent_path=None): + if name not in self.templates: + self.templates[name] = Template(self.dict[name], name=name, + loader=self) + return self.templates[name] + + class _Node(object): def each_child(self): return () diff --git a/tornado/test/template_test.py b/tornado/test/template_test.py index 66a31291a..d6ebc71ad 100644 --- a/tornado/test/template_test.py +++ b/tornado/test/template_test.py @@ -1,4 +1,4 @@ -from tornado.template import Template +from tornado.template import Template, DictLoader from tornado.testing import LogTrapTestCase class TemplateTest(LogTrapTestCase): @@ -6,3 +6,26 @@ class TemplateTest(LogTrapTestCase): template = Template("Hello {{ name }}!") self.assertEqual(template.generate(name="Ben"), "Hello Ben!") + + def test_include(self): + loader = DictLoader({ + "index.html": '{% include "header.html" %}\nbody text', + "header.html": "header text", + }) + self.assertEqual(loader.load("index.html").generate(), + "header text\nbody text") + + def test_extends(self): + loader = DictLoader({ + "base.html": """\ +{% block title %}default title{% end %} +{% block body %}default body{% end %} +""", + "page.html": """\ +{% extends "base.html" %} +{% block title %}page title{% end %} +{% block body %}page body{% end %} +""", + }) + self.assertEqual(loader.load("page.html").generate(), + "page title\npage body\n")