Commit 6e61b38c authored by Fred Drake's avatar Fred Drake

Fix some bugs introduced in the previous checkin.

parent 0b9cbf72
...@@ -41,13 +41,15 @@ _start_optional_rx = re.compile("[ \n]*[[]") ...@@ -41,13 +41,15 @@ _start_optional_rx = re.compile("[ \n]*[[]")
ESCAPED_CHARS = "$%#^ {}&~" ESCAPED_CHARS = "$%#^ {}&~"
def pushing(name, point, depth): def dbgmsg(msg):
if DEBUG: if DEBUG:
sys.stderr.write("%s<%s> at %s\n" % (" "*depth, name, point)) sys.stderr.write(msg + "\n")
def pushing(name, point, depth):
dbgmsg("%s<%s> at %s" % (" "*depth, name, point))
def popping(name, point, depth): def popping(name, point, depth):
if DEBUG: dbgmsg("%s</%s> at %s" % (" "*depth, name, point))
sys.stderr.write("%s</%s> at %s\n" % (" "*depth, name, point))
class Conversion: class Conversion:
...@@ -71,11 +73,11 @@ class Conversion: ...@@ -71,11 +73,11 @@ class Conversion:
self.write = self.ofp.write self.write = self.ofp.write
def subconvert(self, endchar=None, depth=0): def subconvert(self, endchar=None, depth=0):
stack = []
line = self.line
if DEBUG and endchar: if DEBUG and endchar:
self.err_write( self.err_write(
"subconvert(%s)\n line = %s\n" % (`endchar`, `line[:20]`)) "subconvert(%s)\n line = %s\n" % (`endchar`, `line[:20]`))
stack = []
line = self.line
while line: while line:
if line[0] == endchar and not stack: if line[0] == endchar and not stack:
if DEBUG: if DEBUG:
...@@ -108,7 +110,7 @@ class Conversion: ...@@ -108,7 +110,7 @@ class Conversion:
# should be more careful, but this is easier to code: # should be more careful, but this is easier to code:
stack = [] stack = []
self.write(")document\n") self.write(")document\n")
elif envname == stack[-1]: elif stack and envname == stack[-1]:
self.write(")%s\n" % envname) self.write(")%s\n" % envname)
del stack[-1] del stack[-1]
popping(envname, "a", len(stack) + depth) popping(envname, "a", len(stack) + depth)
...@@ -203,7 +205,7 @@ class Conversion: ...@@ -203,7 +205,7 @@ class Conversion:
if m: if m:
line = line[m.end():] line = line[m.end():]
elif type(attrname) is type([]): elif type(attrname) is type([]):
# A normal subelement. # A normal subelement: <macroname><attrname>...</>...
attrname = attrname[0] attrname = attrname[0]
if not opened: if not opened:
opened = 1 opened = 1
...@@ -212,7 +214,8 @@ class Conversion: ...@@ -212,7 +214,8 @@ class Conversion:
self.write("(%s\n" % attrname) self.write("(%s\n" % attrname)
pushing(attrname, "sub-elem", len(stack) + depth + 1) pushing(attrname, "sub-elem", len(stack) + depth + 1)
self.line = skip_white(line)[1:] self.line = skip_white(line)[1:]
line = subconvert("}", depth + len(stack) + 2) line = self.subconvert("}", len(stack) + depth + 1)[1:]
dbgmsg("subconvert() ==> " + `line[:20]`)
popping(attrname, "sub-elem", len(stack) + depth + 1) popping(attrname, "sub-elem", len(stack) + depth + 1)
self.write(")%s\n" % attrname) self.write(")%s\n" % attrname)
else: else:
...@@ -376,6 +379,7 @@ def main(): ...@@ -376,6 +379,7 @@ def main():
"item": ([("leader",)], 1, 0, 0, 0), "item": ([("leader",)], 1, 0, 0, 0),
"label": (["id"], 0, 1, 0, 0), "label": (["id"], 0, 1, 0, 0),
"labelwidth": ([], 0, 1, 0, 0), "labelwidth": ([], 0, 1, 0, 0),
"large": ([], 0, 1, 0, 0),
"LaTeX": ([], 0, 1, 0, 0), "LaTeX": ([], 0, 1, 0, 0),
"leftmargin": ([], 0, 1, 0, 0), "leftmargin": ([], 0, 1, 0, 0),
"leq": ([], 0, 1, 0, 0), "leq": ([], 0, 1, 0, 0),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment