Mercurial > p > roundup > code
comparison roundup/cgi/TAL/TALGenerator.py @ 5377:12fe83f90f0d
Python 3 preparation: use repr() instead of ``.
Tool-generated patch.
| author | Joseph Myers <jsm@polyomino.org.uk> |
|---|---|
| date | Tue, 24 Jul 2018 21:36:02 +0000 |
| parents | 198b6e810c67 |
| children | 0942fe89e82e |
comparison
equal
deleted
inserted
replaced
| 5376:64b05e24dbd8 | 5377:12fe83f90f0d |
|---|---|
| 205 | 205 |
| 206 def compileExpression(self, expr): | 206 def compileExpression(self, expr): |
| 207 try: | 207 try: |
| 208 return self.expressionCompiler.compile(expr) | 208 return self.expressionCompiler.compile(expr) |
| 209 except self.CompilerError as err: | 209 except self.CompilerError as err: |
| 210 raise TALError('%s in expression %s' % (err.args[0], `expr`), | 210 raise TALError('%s in expression %s' % (err.args[0], repr(expr)), |
| 211 self.position) | 211 self.position) |
| 212 | 212 |
| 213 def pushProgram(self): | 213 def pushProgram(self): |
| 214 self.stack.append(self.program) | 214 self.stack.append(self.program) |
| 215 self.program = [] | 215 self.program = [] |
| 266 def emitDefines(self, defines): | 266 def emitDefines(self, defines): |
| 267 for part in TALDefs.splitParts(defines): | 267 for part in TALDefs.splitParts(defines): |
| 268 m = re.match( | 268 m = re.match( |
| 269 r"(?s)\s*(?:(global|local)\s+)?(%s)\s+(.*)\Z" % NAME_RE, part) | 269 r"(?s)\s*(?:(global|local)\s+)?(%s)\s+(.*)\Z" % NAME_RE, part) |
| 270 if not m: | 270 if not m: |
| 271 raise TALError("invalid define syntax: " + `part`, | 271 raise TALError("invalid define syntax: " + repr(part), |
| 272 self.position) | 272 self.position) |
| 273 scope, name, expr = m.group(1, 2, 3) | 273 scope, name, expr = m.group(1, 2, 3) |
| 274 scope = scope or "local" | 274 scope = scope or "local" |
| 275 cexpr = self.compileExpression(expr) | 275 cexpr = self.compileExpression(expr) |
| 276 if scope == "local": | 276 if scope == "local": |
| 300 self.emit("condition", cexpr, program) | 300 self.emit("condition", cexpr, program) |
| 301 | 301 |
| 302 def emitRepeat(self, arg): | 302 def emitRepeat(self, arg): |
| 303 m = re.match("(?s)\s*(%s)\s+(.*)\Z" % NAME_RE, arg) | 303 m = re.match("(?s)\s*(%s)\s+(.*)\Z" % NAME_RE, arg) |
| 304 if not m: | 304 if not m: |
| 305 raise TALError("invalid repeat syntax: " + `arg`, | 305 raise TALError("invalid repeat syntax: " + repr(arg), |
| 306 self.position) | 306 self.position) |
| 307 name, expr = m.group(1, 2) | 307 name, expr = m.group(1, 2) |
| 308 cexpr = self.compileExpression(expr) | 308 cexpr = self.compileExpression(expr) |
| 309 program = self.popProgram() | 309 program = self.popProgram() |
| 310 self.emit("loop", name, cexpr, program) | 310 self.emit("loop", name, cexpr, program) |
| 368 | 368 |
| 369 def emitDefineMacro(self, macroName): | 369 def emitDefineMacro(self, macroName): |
| 370 program = self.popProgram() | 370 program = self.popProgram() |
| 371 macroName = macroName.strip() | 371 macroName = macroName.strip() |
| 372 if self.macros.has_key(macroName): | 372 if self.macros.has_key(macroName): |
| 373 raise METALError("duplicate macro definition: %s" % `macroName`, | 373 raise METALError("duplicate macro definition: %s" % repr(macroName), |
| 374 self.position) | 374 self.position) |
| 375 if not re.match('%s$' % NAME_RE, macroName): | 375 if not re.match('%s$' % NAME_RE, macroName): |
| 376 raise METALError("invalid macro name: %s" % `macroName`, | 376 raise METALError("invalid macro name: %s" % repr(macroName), |
| 377 self.position) | 377 self.position) |
| 378 self.macros[macroName] = program | 378 self.macros[macroName] = program |
| 379 self.inMacroDef = self.inMacroDef - 1 | 379 self.inMacroDef = self.inMacroDef - 1 |
| 380 self.emit("defineMacro", macroName, program) | 380 self.emit("defineMacro", macroName, program) |
| 381 | 381 |
| 387 | 387 |
| 388 def emitDefineSlot(self, slotName): | 388 def emitDefineSlot(self, slotName): |
| 389 program = self.popProgram() | 389 program = self.popProgram() |
| 390 slotName = slotName.strip() | 390 slotName = slotName.strip() |
| 391 if not re.match('%s$' % NAME_RE, slotName): | 391 if not re.match('%s$' % NAME_RE, slotName): |
| 392 raise METALError("invalid slot name: %s" % `slotName`, | 392 raise METALError("invalid slot name: %s" % repr(slotName), |
| 393 self.position) | 393 self.position) |
| 394 self.emit("defineSlot", slotName, program) | 394 self.emit("defineSlot", slotName, program) |
| 395 | 395 |
| 396 def emitFillSlot(self, slotName): | 396 def emitFillSlot(self, slotName): |
| 397 program = self.popProgram() | 397 program = self.popProgram() |
| 398 slotName = slotName.strip() | 398 slotName = slotName.strip() |
| 399 if self.slots.has_key(slotName): | 399 if self.slots.has_key(slotName): |
| 400 raise METALError("duplicate fill-slot name: %s" % `slotName`, | 400 raise METALError("duplicate fill-slot name: %s" % repr(slotName), |
| 401 self.position) | 401 self.position) |
| 402 if not re.match('%s$' % NAME_RE, slotName): | 402 if not re.match('%s$' % NAME_RE, slotName): |
| 403 raise METALError("invalid slot name: %s" % `slotName`, | 403 raise METALError("invalid slot name: %s" % repr(slotName), |
| 404 self.position) | 404 self.position) |
| 405 self.slots[slotName] = program | 405 self.slots[slotName] = program |
| 406 self.inMacroUse = 1 | 406 self.inMacroUse = 1 |
| 407 self.emit("fillSlot", slotName, program) | 407 self.emit("fillSlot", slotName, program) |
| 408 | 408 |
| 485 return | 485 return |
| 486 | 486 |
| 487 self.position = position | 487 self.position = position |
| 488 for key, value in taldict.items(): | 488 for key, value in taldict.items(): |
| 489 if key not in TALDefs.KNOWN_TAL_ATTRIBUTES: | 489 if key not in TALDefs.KNOWN_TAL_ATTRIBUTES: |
| 490 raise TALError("bad TAL attribute: " + `key`, position) | 490 raise TALError("bad TAL attribute: " + repr(key), position) |
| 491 if not (value or key == 'omit-tag'): | 491 if not (value or key == 'omit-tag'): |
| 492 raise TALError("missing value for TAL attribute: " + | 492 raise TALError("missing value for TAL attribute: " + |
| 493 `key`, position) | 493 repr(key), position) |
| 494 for key, value in metaldict.items(): | 494 for key, value in metaldict.items(): |
| 495 if key not in TALDefs.KNOWN_METAL_ATTRIBUTES: | 495 if key not in TALDefs.KNOWN_METAL_ATTRIBUTES: |
| 496 raise METALError("bad METAL attribute: " + `key`, | 496 raise METALError("bad METAL attribute: " + repr(key), |
| 497 position) | 497 position) |
| 498 if not value: | 498 if not value: |
| 499 raise TALError("missing value for METAL attribute: " + | 499 raise TALError("missing value for METAL attribute: " + |
| 500 `key`, position) | 500 repr(key), position) |
| 501 for key, value in i18ndict.items(): | 501 for key, value in i18ndict.items(): |
| 502 if key not in TALDefs.KNOWN_I18N_ATTRIBUTES: | 502 if key not in TALDefs.KNOWN_I18N_ATTRIBUTES: |
| 503 raise I18NError("bad i18n attribute: " + `key`, position) | 503 raise I18NError("bad i18n attribute: " + repr(key), position) |
| 504 if not value and key in ("attributes", "data", "id"): | 504 if not value and key in ("attributes", "data", "id"): |
| 505 raise I18NError("missing value for i18n attribute: " + | 505 raise I18NError("missing value for i18n attribute: " + |
| 506 `key`, position) | 506 repr(key), position) |
| 507 todo = {} | 507 todo = {} |
| 508 defineMacro = metaldict.get("define-macro") | 508 defineMacro = metaldict.get("define-macro") |
| 509 useMacro = metaldict.get("use-macro") | 509 useMacro = metaldict.get("use-macro") |
| 510 defineSlot = metaldict.get("define-slot") | 510 defineSlot = metaldict.get("define-slot") |
| 511 fillSlot = metaldict.get("fill-slot") | 511 fillSlot = metaldict.get("fill-slot") |
