]> git.lyx.org Git - features.git/commitdiff
fix lyx2lyx with new file format
authorJosé Matox <jamatos@lyx.org>
Mon, 28 Jul 2003 13:09:39 +0000 (13:09 +0000)
committerJosé Matox <jamatos@lyx.org>
Mon, 28 Jul 2003 13:09:39 +0000 (13:09 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7415 a592a061-630c-0410-9148-cb99ea01b6c8

lib/ChangeLog
lib/lyx2lyx/lyxconvert_224.py

index 0ed7e92270405439d7cc6ec43aa8596d1715bc04..ef311d5f579c5cd24aeff0d4c6846f812c6e3288 100644 (file)
@@ -1,3 +1,7 @@
+2003-07-28  José Matos  <jamatos@fep.up.pt>
+
+       * lyx2lyx/lyx_convert224.py (add_end_layout): fix logic.
+
 2003-07-28  José Matos  <jamatos@fep.up.pt>
 
        * lyx2lyx/lyx_convert224.py (add_end_layout): new file to read new format.
index a7fc145470ed5600173ea4e5d24dcff84e2e84a0..18c41b13fe064d678cd00f370ba7a8e1675e39c0 100644 (file)
 
 from parser_tools import find_token, find_tokens
 from sys import stderr
+from string import replace, split
 
 def add_end_layout(lines):
-    begin_layout = "\\layout"
+    i = find_token(lines, '\\layout', 0)
 
-    i = find_token(lines, begin_layout, 0)
     if i == -1:
-        write(stderr, "lyx2lyx: File with no paragraphs. ")
-        lines[0:len(lines)] = []
         return
-    i = i + 1
 
+    i = i + 1
+    struct_stack = ["\\layout"]
     while 1:
         i = find_tokens(lines, ["\\begin_inset", "\\end_inset", "\\layout",
                                 "\\begin_deeper", "\\end_deeper", "\\the_end"], i)
 
-        lines[i:i] = ["\\end_layout"]
-        i = i + 1
-        i = find_token(lines, begin_layout, i)
-        if i == -1:
-            return
-        i = i + 1
+        token = split(lines[i])[0]
+
+        if token == "\\begin_inset":
+            struct_stack.append(token)
+            i = i + 1
+            continue
+
+        if token == "\\end_inset":
+            tail = struct_stack.pop()
+            if tail == "\\layout":
+                lines.insert(i,"\\end_layout")
+                i = i + 1
+                #Check if it is the correct tag
+                struct_stack.pop()
+            i = i + 1
+            continue
+
+        if token == "\\layout":
+            tail = struct_stack.pop()
+            if tail == token:
+                lines.insert(i,"\\end_layout")
+                i = i + 2
+            else:
+                struct_stack.append(tail)
+                i = i + 1
+            struct_stack.append(token)
+            continue
+
+        if token == "\\begin_deeper" or token == "\\end_deeper":
+            lines.insert(i,"\\end_layout")
+            i = i + 2
+            continue
         
+        #case \end_document
+        lines.insert(i, "\\end_layout")
+        return
+
+## def layout2begin_layout(lines):
+##     i = 0
+##     while 1:
+##         i = find_token(lines, '\\layout', i)
+##         if i == -1:
+##             return
+
+##         lines[i]= replace(lines[i], '\\layout', '\\begin_layout')
+##         i = i + 1
+
 def convert(header, body):
     add_end_layout(body)
+##     layout2begin_layout(body)
 
 if __name__ == "__main__":
     pass