fix a flaw in the loop logic

This commit is contained in:
Patrick Parker 2007-09-06 02:43:04 +00:00
parent ea3323d98d
commit 001d1fa9bf

View file

@ -682,29 +682,30 @@ def hack_syntax(filename, lines):
# Upconvert old radius usage
if "1.3.7" in versions and future:
radius_pos = wmlfind("radius=")
scopeIter = radius_pos.iterScope()
startline = scopeIter.lineno()
wspace = radius_pos.text()
wspace = wspace[:len(wspace)-len(wspace.lstrip())]
radius_danger = False
to_indent = []
no_indent = []
for pos in scopeIter:
tag = pos.tag()
if tag in ("[and]", "[or]", "[not]"):
radius_danger = True
no_indent.extend(pos.text().splitlines())
elif tag in ("variable=", "side=", "count=", "adjacent="):
no_indent.extend(pos.text().splitlines())
else:
to_add = pos.text().splitlines()
to_add[0] = baseindent + to_add[0]
to_indent.extend(to_add)
if radius_danger:
lines = lines[:startline] + [wspace + "[and]"] + to_indent +\
[wspace + "[/and]"] + no_indent + lines[scopeIter.lineno():]
modcount += 1
while radius_pos is not None:
scopeIter = radius_pos.iterScope()
startline = scopeIter.lineno()
wspace = radius_pos.text()
wspace = wspace[:len(wspace)-len(wspace.lstrip())]
radius_danger = False
to_indent = []
no_indent = []
for pos in scopeIter:
tag = pos.tag()
if tag in ("[and]", "[or]", "[not]"):
radius_danger = True
no_indent.extend(pos.text().splitlines())
elif tag in ("variable=", "side=", "count=", "adjacent="):
no_indent.extend(pos.text().splitlines())
else:
to_add = pos.text().splitlines()
to_add[0] = baseindent + to_add[0]
to_indent.extend(to_add)
if radius_danger:
lines = lines[:startline] + [wspace + "[and]"] + to_indent +\
[wspace + "[/and]"] + no_indent + lines[scopeIter.lineno():]
modcount += 1
radius_pos = wmlfind("radius=", radius_pos.next())
# More syntax transformations would go here.
return (lines, modcount)