aboutsummaryrefslogtreecommitdiffstats
path: root/lib/mako/codegen.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mako/codegen.py')
-rw-r--r--lib/mako/codegen.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/mako/codegen.py b/lib/mako/codegen.py
index db520da..379cb4c 100644
--- a/lib/mako/codegen.py
+++ b/lib/mako/codegen.py
@@ -14,20 +14,21 @@ from mako import util, ast, parsetree, filters
MAGIC_NUMBER = 2
-def compile(node, uri, filename=None, default_filters=None, buffer_filters=None, imports=None):
+def compile(node, uri, filename=None, default_filters=None, buffer_filters=None, imports=None, source_encoding=None):
"""generate module source code given a parsetree node, uri, and optional source filename"""
buf = util.FastEncodingBuffer()
printer = PythonPrinter(buf)
- _GenerateRenderMethod(printer, _CompileContext(uri, filename, default_filters, buffer_filters, imports), node)
+ _GenerateRenderMethod(printer, _CompileContext(uri, filename, default_filters, buffer_filters, imports, source_encoding), node)
return buf.getvalue()
class _CompileContext(object):
- def __init__(self, uri, filename, default_filters, buffer_filters, imports):
+ def __init__(self, uri, filename, default_filters, buffer_filters, imports, source_encoding):
self.uri = uri
self.filename = filename
self.default_filters = default_filters
self.buffer_filters = buffer_filters
self.imports = imports
+ self.source_encoding = source_encoding
class _GenerateRenderMethod(object):
"""a template visitor object which generates the full module source for a template."""
@@ -116,12 +117,13 @@ class _GenerateRenderMethod(object):
self.printer.writeline("_template_filename=%s" % repr(self.compiler.filename))
self.printer.writeline("_template_uri=%s" % repr(self.compiler.uri))
self.printer.writeline("_template_cache=cache.Cache(__name__, _modified_time)")
+ self.printer.writeline("_source_encoding=%s" % repr(self.compiler.source_encoding))
if self.compiler.imports:
buf = ''
for imp in self.compiler.imports:
buf += imp + "\n"
self.printer.writeline(imp)
- impcode = ast.PythonCode(buf, 0, 0, 'template defined imports')
+ impcode = ast.PythonCode(buf, source='', lineno=0, pos=0, filename='template defined imports')
else:
impcode = None
@@ -445,8 +447,7 @@ class _GenerateRenderMethod(object):
else:
x = e
e = locate_encode(e)
- if e is None:
- raise "der its none " + x
+ assert e is not None
target = "%s(%s)" % (e, target)
return target