From 7a3c1708d254c2e4ee6a3138e7df01da9a4b81ae Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Matox?= Date: Mon, 28 Jul 2003 13:09:39 +0000 Subject: [PATCH] fix lyx2lyx with new file format git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7415 a592a061-630c-0410-9148-cb99ea01b6c8 --- lib/ChangeLog | 4 +++ lib/lyx2lyx/lyxconvert_224.py | 62 ++++++++++++++++++++++++++++------- 2 files changed, 55 insertions(+), 11 deletions(-) diff --git a/lib/ChangeLog b/lib/ChangeLog index 0ed7e92270..ef311d5f57 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,7 @@ +2003-07-28 José Matos + + * lyx2lyx/lyx_convert224.py (add_end_layout): fix logic. + 2003-07-28 José Matos * lyx2lyx/lyx_convert224.py (add_end_layout): new file to read new format. diff --git a/lib/lyx2lyx/lyxconvert_224.py b/lib/lyx2lyx/lyxconvert_224.py index a7fc145470..18c41b13fe 100644 --- a/lib/lyx2lyx/lyxconvert_224.py +++ b/lib/lyx2lyx/lyxconvert_224.py @@ -17,30 +17,70 @@ 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 -- 2.39.2