[ZPT] CVS: Zope3/lib/python/Zope/TAL - TALInterpreter.py:1.63.10.7

Jim Fulton jim@zope.com
Thu, 23 May 2002 14:01:23 -0400


Update of /cvs-repository/Zope3/lib/python/Zope/TAL
In directory cvs.zope.org:/tmp/cvs-serv26429/lib/python/Zope/TAL

Modified Files:
      Tag: Zope-3x-branch
	TALInterpreter.py 
Log Message:
This all started with wanting to be able to use url;view in a ZPT path. :)

That lead me to:

- Massive traversal refactoring.

  Namespace handling is now centralized in Zope.App.Traversing. 

- ZPT refactoring, including some renaming that touches pretty much everything. :)

  - The application specific ZPT support was moved into
    Zope.App.PageTemplate. 

  - To get page template files (for use in views):

    from Zope.App.PageTemplate import ViewPageTemplateFile

  - Fixed up security so that ZPT expressions only have access to 
    safe builtins and so that modules namespace does imports safely.

  - Got ZPTPage working!

- renaming url to absolute_url and got absolute_url to work in paths.

- Cleaned up the (as yet unused) RestrictedInterpreter module in
  Zope.Security. In particular, changed to use a separate
  RestrictedBuiltins module.



=== Zope3/lib/python/Zope/TAL/TALInterpreter.py 1.63.10.6 => 1.63.10.7 ===
         self.program = program
         self.macros = macros
-        self.engine = engine
+        self.engine = engine # Execution engine (aka context)
         self.Default = engine.getDefault()
         self.stream = stream or sys.stdout
         self._stream_write = self.stream.write
@@ -446,6 +446,16 @@
         else:
             self.insertXMLStructure(text, repldict)
     bytecode_handlers["insertStructure"] = do_insertStructure
+
+
+# XXX There is a bug in the dance between TALInterpreter and TALES.
+# TALInterpreter expects contexts to also be engines. When someone
+# inserts structure, the structure can, apparently have TAL, because
+# the TAL compiler is used. If there was TAL, it would try to use the
+# engine, which is a context, to compile expressions found. The TALES
+# context is not a compiler. Is this a YAGNI?
+
+
 
     def insertHTMLStructure(self, text, repldict):
         from HTMLTALParser import HTMLTALParser