diff options
Diffstat (limited to 'src/zope/tal/talgenerator.py')
-rw-r--r-- | src/zope/tal/talgenerator.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/zope/tal/talgenerator.py b/src/zope/tal/talgenerator.py index ac77c18..ce7470c 100644 --- a/src/zope/tal/talgenerator.py +++ b/src/zope/tal/talgenerator.py @@ -11,7 +11,8 @@ # FOR A PARTICULAR PURPOSE. # ############################################################################## -"""Code generator for TALInterpreter intermediate code. +""" +Code generator for :class:`~.TALInterpreter` intermediate code. """ import re @@ -37,12 +38,20 @@ except NameError: _name_rx = re.compile(NAME_RE) class TALGenerator(object): + """ + Generate intermediate code. + """ inMacroUse = 0 inMacroDef = 0 source_file = None def __init__(self, expressionCompiler=None, xml=1, source_file=None): + """ + :keyword expressionCompiler: The implementation of + :class:`zope.tal.interfaces.ITALExpressionCompiler` to use. + If not given, we'll use a simple, undocumented, compiler. + """ if not expressionCompiler: from zope.tal.dummyengine import DummyEngine expressionCompiler = DummyEngine() @@ -96,7 +105,7 @@ class TALGenerator(object): if self.optimizeStartTag(collect, item[1], item[2], ">"): continue if opcode == "startEndTag": - endsep = self.xml and "/>" or " />" + endsep = "/>" if self.xml else " />" if self.optimizeStartTag(collect, item[1], item[2], endsep): continue if opcode in ("beginScope", "endScope"): @@ -182,9 +191,9 @@ class TALGenerator(object): output = program[:2] prev2, prev1 = output for item in program[2:]: - if ( item[0] == "beginScope" - and prev1[0] == "setPosition" - and prev2[0] == "rawtextColumn"): + if (item[0] == "beginScope" + and prev1[0] == "setPosition" + and prev2[0] == "rawtextColumn"): position = output.pop()[1] text, column = output.pop()[1] prev1 = None, None @@ -302,7 +311,7 @@ class TALGenerator(object): self.emit("condition", cexpr, program) def emitRepeat(self, arg): - m = re.match("(?s)\s*(%s)\s+(.*)\Z" % NAME_RE, arg) + m = re.match(r"(?s)\s*(%s)\s+(.*)\Z" % NAME_RE, arg) if not m: raise TALError("invalid repeat syntax: " + repr(arg), self.position) |