Mercurial > p > roundup > code
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 |
