if i == -1:
break
- # scan table header meta-info
- lines[i+1] = string.replace(lines[i+1], 'version="2"', 'version="3"')
-
- j = find_token(lines, '</lyxtabular>', i)
+ j = find_end_of_tabular(lines, i+1)
if j == -1:
break
- for k in xrange(i+2,j):
- if check_token(lines[k], "<column"):
- lines[k] = string.replace(lines[k], 'width=""', 'width="0pt"')
+ for k in xrange(i+1,j):
+ if check_token(lines[k], "<lyxtabular"):
+ lines[k] = string.replace(lines[k], 'version="2"', 'version="3"')
+ elif check_token(lines[k], "<column"):
+ lines[k] = string.replace(lines[k], 'width=""', 'width="0pt"')
+
if line_re.match(lines[k]):
lines[k] = re.sub(attr_re, "", lines[k])
- i = i+1
+ i = j+1
def change_preamble(lines):
i = find_token(lines, "\\use_amsmath", 0)
return i
i = find_end_of_inset(lines, i)
-# Finds the matching \end_inset
-def find_end_of_inset(lines, i):
+def find_end_of(lines, i, start_token, end_token):
count = 1
- while 1:
- i = find_tokens(lines, ["\\end_inset", "\\begin_inset"], i+1)
- if check_token(lines[i], "\\begin_inset"):
+ n = len(lines)
+ while i < n:
+ i = find_tokens(lines, [end_token, start_token], i+1)
+ if check_token(lines[i], start_token):
count = count+1
else:
count = count-1
if count == 0:
return i
+ return -1
# Finds the matching \end_inset
-def find_beginning_of_inset(lines, i):
+def find_beginning_of(lines, i, start_token, end_token):
count = 1
- while 1:
- i = find_tokens_backwards(lines, ["\\end_inset", "\\begin_inset"], i-1)
- if check_token(lines[i], "\\end_inset"):
+ n = len(lines)
+ while i < n:
+ i = find_tokens_backwards(lines, [start_token, end_token], i-1)
+ if check_token(lines[i], end_token):
count = count+1
else:
count = count-1
if count == 0:
return i
+ return -1
+
+# Finds the matching \end_inset
+def find_end_of_inset(lines, i):
+ return find_end_of(lines, i, "\\begin_inset", "\\end_inset")
+
+# Finds the matching \end_inset
+def find_beginning_of_inset(lines, i):
+ return find_beginning_of(lines, i, "\\begin_inset", "\\end_inset")
+
+def find_end_of_tabular(lines, i):
+ return find_end_of(lines, i, "<lyxtabular", "</lyxtabular")
def is_nonempty_line(line):
return line != " "*len(line)