[ZPT] CVS: Zope/lib/python/TAL - DummyEngine.py:1.29.18.2 TALGenerator.py:1.53.18.1 TALInterpreter.py:1.66.2.2
Shane Hathaway
shane@cvs.zope.org
Mon, 4 Mar 2002 18:14:39 -0500
Update of /cvs-repository/Zope/lib/python/TAL
In directory cvs.zope.org:/tmp/cvs-serv18154
Modified Files:
Tag: shane-better-tracebacks-branch
DummyEngine.py TALGenerator.py TALInterpreter.py
Log Message:
Added tracking of the source filename for TAL so that tracebacks can show a
filename along with the (line, column) pair.
=== Zope/lib/python/TAL/DummyEngine.py 1.29.18.1 => 1.29.18.2 ===
position = None
+ source_file = None
def __init__(self, macros=None):
if macros is None:
@@ -43,6 +44,9 @@
def getCompilerError(self):
return CompilerError
+
+ def setSourceFile(self, source_file):
+ self.source_file = source_file
def setPosition(self, position):
self.position = position
=== Zope/lib/python/TAL/TALGenerator.py 1.53 => 1.53.18.1 ===
inMacroUse = 0
inMacroDef = 0
+ source_file = None
- def __init__(self, expressionCompiler=None, xml=1):
+ def __init__(self, expressionCompiler=None, xml=1, source_file=None):
if not expressionCompiler:
from DummyEngine import DummyEngine
expressionCompiler = DummyEngine()
@@ -40,6 +41,9 @@
self.xml = xml
self.emit("version", TAL_VERSION)
self.emit("mode", xml and "xml" or "html")
+ if source_file is not None:
+ self.source_file = source_file
+ self.emit("setSourceFile", source_file)
def getCode(self):
assert not self.stack
@@ -438,6 +442,8 @@
self.pushProgram()
self.emit("version", TAL_VERSION)
self.emit("mode", self.xml and "xml" or "html")
+ if self.source_file is not None:
+ self.emit("setSourceFile", self.source_file)
todo["defineMacro"] = defineMacro
self.inMacroDef = self.inMacroDef + 1
if useMacro:
=== Zope/lib/python/TAL/TALInterpreter.py 1.66.2.1 => 1.66.2.2 ===
bytecode_handlers["mode"] = do_mode
+ def do_setSourceFile(self, source_file):
+ self.engine.setSourceFile(source_file)
+ bytecode_handlers["setSourceFile"] = do_setSourceFile
+
def do_setPosition(self, position):
self.position = position
self.engine.setPosition(position)