comparison roundup/cgi/PageTemplates/TALES.py @ 1257:93b80ad11ca8

merged Zope Collector #372 fix from ZPT CVS trunk
author Richard Jones <richard@users.sourceforge.net>
date Thu, 10 Oct 2002 03:48:02 +0000
parents 9620f6782cb7
children 8dc60d87ab42
comparison
equal deleted inserted replaced
1256:1621df560512 1257:93b80ad11ca8
17 Modified for Roundup 0.5 release: 17 Modified for Roundup 0.5 release:
18 18
19 - changed imports to import from roundup.cgi 19 - changed imports to import from roundup.cgi
20 """ 20 """
21 21
22 __version__='$Revision: 1.3 $'[11:-2] 22 __version__='$Revision: 1.4 $'[11:-2]
23 23
24 import re, sys 24 import re, sys
25 from roundup.cgi import ZTUtils 25 from roundup.cgi import ZTUtils
26 from MultiMapping import MultiMapping 26 from MultiMapping import MultiMapping
27 27
158 158
159 _context_class = SafeMapping 159 _context_class = SafeMapping
160 position = (None, None) 160 position = (None, None)
161 source_file = None 161 source_file = None
162 162
163 def __init__(self, engine, contexts): 163 def __init__(self, compiler, contexts):
164 self._engine = engine 164 self._compiler = compiler
165 self.contexts = contexts 165 self.contexts = contexts
166 contexts['nothing'] = None 166 contexts['nothing'] = None
167 contexts['default'] = Default 167 contexts['default'] = Default
168 168
169 self.repeat_vars = rv = {} 169 self.repeat_vars = rv = {}
175 self.local_vars = lv = {} 175 self.local_vars = lv = {}
176 self.vars = self._context_class(gv, lv) 176 self.vars = self._context_class(gv, lv)
177 177
178 # Keep track of what needs to be popped as each scope ends. 178 # Keep track of what needs to be popped as each scope ends.
179 self._scope_stack = [] 179 self._scope_stack = []
180
181 def getCompiler(self):
182 return self._compiler
180 183
181 def beginScope(self): 184 def beginScope(self):
182 self._scope_stack.append([self.local_vars.copy()]) 185 self._scope_stack.append([self.local_vars.copy()])
183 186
184 def endScope(self): 187 def endScope(self):
204 self.global_vars[name] = value 207 self.global_vars[name] = value
205 208
206 def setRepeat(self, name, expr): 209 def setRepeat(self, name, expr):
207 expr = self.evaluate(expr) 210 expr = self.evaluate(expr)
208 if not expr: 211 if not expr:
209 return self._engine.Iterator(name, (), self) 212 return self._compiler.Iterator(name, (), self)
210 it = self._engine.Iterator(name, expr, self) 213 it = self._compiler.Iterator(name, expr, self)
211 old_value = self.repeat_vars.get(name) 214 old_value = self.repeat_vars.get(name)
212 self._scope_stack[-1].append((name, old_value)) 215 self._scope_stack[-1].append((name, old_value))
213 self.repeat_vars[name] = it 216 self.repeat_vars[name] = it
214 return it 217 return it
215 218
216 def evaluate(self, expression, 219 def evaluate(self, expression,
217 isinstance=isinstance, StringType=StringType): 220 isinstance=isinstance, StringType=StringType):
218 if isinstance(expression, StringType): 221 if isinstance(expression, StringType):
219 expression = self._engine.compile(expression) 222 expression = self._compiler.compile(expression)
220 __traceback_supplement__ = ( 223 __traceback_supplement__ = (
221 TALESTracebackSupplement, self, expression) 224 TALESTracebackSupplement, self, expression)
222 v = expression(self) 225 v = expression(self)
223 return v 226 return v
224 227

Roundup Issue Tracker: http://roundup-tracker.org/