]> git.lyx.org Git - features.git/commitdiff
Work with nested tabulars
authorDekel Tsur <dekelts@tau.ac.il>
Sat, 31 Aug 2002 11:27:01 +0000 (11:27 +0000)
committerDekel Tsur <dekelts@tau.ac.il>
Sat, 31 Aug 2002 11:27:01 +0000 (11:27 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5189 a592a061-630c-0410-9148-cb99ea01b6c8

lib/ChangeLog
lib/lyx2lyx/lyxconvert_218.py
lib/lyx2lyx/parser_tools.py

index a021d9343b992818c16a71f7acf41fefcd57b54d..78eb9bb710f8e5c4ed3eb94e074935c687e7fa55 100644 (file)
@@ -1,3 +1,7 @@
+2002-08-31  Dekel Tsur  <dekelts@tau.ac.il>
+
+       * lyx2lyx/lyxconvert_218.py (update_tabular): Work with nested tabulars
+
 2002-08-29  John Levon  <levon@movementarian.org>
 
        * images/math/: add AMS nrel
index 6d72f9e61c95d6eb68f064d6c507c123fe2fb49d..f5ea8b0235fbe7846de530195710edaa70f2a49b 100644 (file)
@@ -404,20 +404,20 @@ def update_tabular(lines):
         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)
index 8d9c45e35ce45001e06606fd25f9b64bd6e71e74..3b15704eac1eb9f5ade988eb24cd6cf46a347fd5 100644 (file)
@@ -106,29 +106,43 @@ def get_next_paragraph(lines, i):
            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)