summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hellkamp <marc@gsites.de>2009-07-12 22:51:07 +0200
committerMarcel Hellkamp <marc@gsites.de>2009-07-12 22:51:07 +0200
commit8ad8e6122afadec6a6377b70f209f72556f4802c (patch)
treeffaeba1be18292120b89cd0fceffabea13b334c6
parent16a131de2ed3c9b7fe6bcfcff71a85a71bfe9342 (diff)
downloadbottle-8ad8e6122afadec6a6377b70f209f72556f4802c.tar.gz
Refactoring
-rw-r--r--bottle.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/bottle.py b/bottle.py
index b2c90de..7dfdbfb 100644
--- a/bottle.py
+++ b/bottle.py
@@ -583,8 +583,10 @@ class BaseTemplate(object):
template = fp.read()
fp.close()
self.parse(template)
+
def parse(self, template): raise NotImplementedError
def render(self, **args): raise NotImplementedError
+
@classmethod
def find(cls, name):
files = [path % name for path in TEMPLATE_PATH if os.path.isfile(path % name)]
@@ -609,7 +611,7 @@ class SimpleTemplate(BaseTemplate):
re_inline = re.compile(r'\{\{(.*?)\}\}')
dedent_keywords = ('elif', 'else', 'except', 'finally')
- def parse(self, template):
+ def translate(self, template):
indent = 0
strbuffer = []
code = []
@@ -652,7 +654,10 @@ class SimpleTemplate(BaseTemplate):
splits[i] = PyStmt(splits[i])
code.append(" " * indent + "stdout.extend(%s)\n" % repr(splits))
flush()
- self.co = compile("".join(code), self.source, 'exec')
+ return "".join(code)
+
+ def parse(self, template):
+ self.co = compile("".join(self.translate(template)), self.source, 'exec')
def render(self, **args):
''' Returns the rendered template using keyword arguments as local variables. '''