X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Flyx2lyx%2Flyx_0_12.py;h=6cbd145fb5fdafeee5dfedfc8b27a4842085a731;hb=9da74fe2078e24e1e7891784ecbfe33ff77e7f85;hp=bb89fb57bd6da6707cc88fe80c13dcea9400d103;hpb=b666ae90e33426db17eb771ae5ea25037a721046;p=lyx.git diff --git a/lib/lyx2lyx/lyx_0_12.py b/lib/lyx2lyx/lyx_0_12.py index bb89fb57bd..6cbd145fb5 100644 --- a/lib/lyx2lyx/lyx_0_12.py +++ b/lib/lyx2lyx/lyx_0_12.py @@ -1,6 +1,6 @@ # This file is part of lyx2lyx -# -*- coding: iso-8859-1 -*- -# Copyright (C) 2003-2004 José Matos +# -*- coding: utf-8 -*- +# Copyright (C) 2003-2004 José Matos # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -14,43 +14,48 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +""" Convert files to the file format generated by lyx 0.12""" import re -import string from parser_tools import find_token, find_re, check_token -def space_before_layout(file): - lines = file.body +def space_before_layout(document): + " Remove empty line before \\layout. " + lines = document.body i = 2 # skip first layout while 1: i = find_token(lines, '\\layout', i) if i == -1: break - if lines[i - 1] == '' and string.find(lines[i-2],'\\protected_separator') == -1: + prot_space = lines[i-2].find('\\protected_separator') + if lines[i - 1] == '' and prot_space == -1: del lines[i-1] i = i + 1 -def formula_inset_space_eat(file): - lines = file.body - i=0 +def formula_inset_space_eat(document): + " Remove space after inset formula." + lines = document.body + i = 0 while 1: i = find_token(lines, "\\begin_inset Formula", i) - if i == -1: break + if i == -1: + break if len(lines[i]) > 22 and lines[i][21] == ' ': lines[i] = lines[i][:20] + lines[i][21:] i = i + 1 -# Update from tabular format 1 or 2 to 4 -def update_tabular(file): - lines = file.body +def update_tabular(document): + " Update from tabular format 1 or 2 to 4." + lines = document.body lyxtable_re = re.compile(r".*\\LyXTable$") - i=0 + i = 0 while 1: i = find_re(lines, lyxtable_re, i) if i == -1: @@ -58,10 +63,10 @@ def update_tabular(file): i = i + 1 format = lines[i][8:] - lines[i]='multicol4' + lines[i] = 'multicol4' i = i + 1 - rows = int(string.split(lines[i])[0]) - columns = int(string.split(lines[i])[1]) + rows = int(lines[i].split()[0]) + columns = int(lines[i].split()[1]) lines[i] = lines[i] + ' 0 0 -1 -1 -1 -1' i = i + 1 @@ -74,27 +79,34 @@ def update_tabular(file): lines[i] = lines[i] + ' ' i = i + 1 - while string.strip(lines[i]): + while lines[i].strip(): if not format: lines[i] = lines[i] + ' 1 1' lines[i] = lines[i] + ' 0 0 0' i = i + 1 - lines[i] = string.strip(lines[i]) + lines[i] = lines[i].strip() -def final_dot(file): - lines = file.body + +def final_dot(document): + " Merge lines if the dot is the final character." + lines = document.body i = 0 while i < len(lines): - if lines[i][-1:] == '.' and lines[i+1][:1] != '\\' and lines[i+1][:1] != ' ' and len(lines[i]) + len(lines[i+1])<= 72 and lines[i+1] != '': + + if lines[i][-1:] == '.' and lines[i+1][:1] != '\\' and \ + lines[i+1][:1] != ' ' and len(lines[i]) + len(lines[i+1])<= 72 \ + and lines[i+1] != '': + lines[i] = lines[i] + lines[i+1] del lines[i+1] else: i = i + 1 -def update_inset_label(file): - lines = file.body +def update_inset_label(document): + " Update inset Label." + lines = document.body i = 0 while 1: i = find_token(lines, '\\begin_inset Label', i) @@ -104,26 +116,32 @@ def update_inset_label(file): i = i + 1 -def update_latexdel(file): - lines = file.body +def update_latexdel(document): + " Update inset LatexDel." + lines = document.body i = 0 while 1: i = find_token(lines, '\\begin_inset LatexDel', i) if i == -1: return - lines[i] = string.replace(lines[i],'\\begin_inset LatexDel', '\\begin_inset LatexCommand') + lines[i] = lines[i].replace('\\begin_inset LatexDel', + '\\begin_inset LatexCommand') i = i + 1 -def update_vfill(file): - lines = file.body +def update_vfill(document): + " Update fill_top and fill_bottom." + lines = document.body for i in range(len(lines)): - lines[i] = string.replace(lines[i],'\\fill_top','\\added_space_top vfill') - lines[i] = string.replace(lines[i],'\\fill_bottom','\\added_space_bottom vfill') + lines[i] = lines[i].replace('\\fill_top', + '\\added_space_top vfill') + lines[i] = lines[i].replace('\\fill_bottom', + '\\added_space_bottom vfill') -def update_space_units(file): - lines = file.body +def update_space_units(document): + " Update space units." + lines = document.body added_space_bottom = re.compile(r'\\added_space_bottom ([^ ]*)') added_space_top = re.compile(r'\\added_space_top ([^ ]*)') for i in range(len(lines)): @@ -131,17 +149,18 @@ def update_space_units(file): if result: old = '\\added_space_bottom ' + result.group(1) new = '\\added_space_bottom ' + str(float(result.group(1))) + 'cm' - lines[i] = string.replace(lines[i], old, new) + lines[i] = lines[i].replace(old, new) result = added_space_top.search(lines[i]) if result: old = '\\added_space_top ' + result.group(1) new = '\\added_space_top ' + str(float(result.group(1))) + 'cm' - lines[i] = string.replace(lines[i], old, new) + lines[i] = lines[i].replace(old, new) -def remove_cursor(file): - lines = file.body +def remove_cursor(document): + " Remove cursor, it is not saved on the file anymore." + lines = document.body i = 0 cursor_re = re.compile(r'.*(\\cursor \d*)') while 1: @@ -149,15 +168,16 @@ def remove_cursor(file): if i == -1: break cursor = cursor_re.search(lines[i]).group(1) - lines[i]= string.replace(lines[i], cursor, '') + lines[i] = lines[i].replace(cursor, '') i = i + 1 -def remove_empty_insets(file): - lines = file.body +def remove_empty_insets(document): + " Remove empty insets." + lines = document.body i = 0 while 1: - i = find_token(lines, '\\begin_inset ',i) + i = find_token(lines, '\\begin_inset ', i) if i == -1: break if lines[i] == '\\begin_inset ' and lines[i+1] == '\\end_inset ': @@ -166,8 +186,9 @@ def remove_empty_insets(file): i = i + 1 -def remove_formula_latex(file): - lines = file.body +def remove_formula_latex(document): + " Remove formula latex." + lines = document.body i = 0 while 1: i = find_token(lines, '\\latex formula_latex ', i) @@ -181,35 +202,30 @@ def remove_formula_latex(file): del lines[i] -def add_end_document(file): - lines = file.body +def add_end_document(document): + " Add \\the_end to the end of the document." + lines = document.body i = find_token(lines, '\\the_end', 0) if i == -1: lines.append('\\the_end') -def header_update(file): - lines = file.header +def header_update(document): + " Update document header." + lines = document.header i = 0 l = len(lines) while i < l: - if check_token(lines[i], '\\begin_preamble'): - i = find_token(lines, '\\end_preamble', i) - if i == -1: - file.error('Unfinished preamble') - i = i + 1 - continue - if lines[i][-1:] == ' ': lines[i] = lines[i][:-1] if check_token(lines[i], '\\epsfig'): - lines[i] = string.replace(lines[i], '\\epsfig', '\\graphics') + lines[i] = lines[i].replace('\\epsfig', '\\graphics') i = i + 1 continue if check_token(lines[i], '\\papersize'): - size = string.split(lines[i])[1] + size = lines[i].split()[1] new_size = size paperpackage = "" @@ -232,7 +248,7 @@ def header_update(file): if check_token(lines[i], '\\baselinestretch'): - size = string.split(lines[i])[1] + size = lines[i].split()[1] if size == '1.00': name = 'single' elif size == '1.50': @@ -248,17 +264,18 @@ def header_update(file): i = i + 1 -def update_latexaccents(file): - body = file.body +def update_latexaccents(document): + " Update latex accent insets." + body = document.body i = 1 while 1: i = find_token(body, '\\i ', i) if i == -1: return - contents = string.strip(body[i][2:]) + contents = body[i][2:].strip() - if string.find(contents, '{') != -1 and string.find(contents, '}') != -1: + if contents.find('{') != -1 and contents.find('}') != -1: i = i + 1 continue @@ -276,26 +293,47 @@ def update_latexaccents(file): i = i + 1 -def obsolete_latex_title(file): - body = file.body +def obsolete_latex_title(document): + " Replace layout Latex_Title with Title." + body = document.body i = 0 while 1: i = find_token(body, '\\layout', i) if i == -1: return - if string.find(string.lower(body[i]),'latex_title') != -1: + if body[i].lower().find('latex_title') != -1: body[i] = '\\layout Title' i = i + 1 +def remove_inset_latex(document): + "Replace inset latex with layout LaTeX" + body = document.body + + i = 0 + while 1: + i = find_token(body, '\\begin_inset Latex', i) + if i == -1: + return + + body[i] = body[i].replace('\\begin_inset Latex', '\\layout LaTeX') + i = find_token(body, '\\end_inset', i) + if i == -1: + #this should not happen + return + del body[i] + + +supported_versions = ["0.12.0","0.12.1","0.12"] convert = [[215, [header_update, add_end_document, remove_cursor, final_dot, update_inset_label, update_latexdel, update_space_units, space_before_layout, formula_inset_space_eat, update_tabular, update_vfill, remove_empty_insets, - remove_formula_latex, update_latexaccents, obsolete_latex_title]]] + remove_formula_latex, update_latexaccents, + obsolete_latex_title, remove_inset_latex]]] revert = []