X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Flyx2lyx%2Flyx_1_6.py;h=2d0964c3afeab7f80a4da853715b9c4feea507ea;hb=0f18bc753c9555c505b3508df4439bd8a5db2319;hp=4058f46fb6e0481554e3ea46130f54112259a359;hpb=4d2b6ffc78637c0042d51b06d8c3d94579a0de2a;p=lyx.git diff --git a/lib/lyx2lyx/lyx_1_6.py b/lib/lyx2lyx/lyx_1_6.py index 4058f46fb6..2d0964c3af 100644 --- a/lib/lyx2lyx/lyx_1_6.py +++ b/lib/lyx2lyx/lyx_1_6.py @@ -14,7 +14,7 @@ # # 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 1.6""" @@ -22,11 +22,27 @@ import re import unicodedata import sys, os -from parser_tools import find_token, find_end_of, find_tokens, get_value, get_value_string +from parser_tools import find_token, find_end_of, find_tokens, get_value #################################################################### # Private helper functions + +def get_value_string(lines, token, start, end = 0, trim = False, default = ""): + """ get_value_string(lines, token, start[[, end], trim, default]) -> string + + Return tokens after token as string, in lines, where + token is the first element. When trim is used, the first and last character + of the string is trimmed.""" + + val = get_value(lines, token, start, end, "") + if not val: + return default + if trim: + return val[1:-1] + return val + + def find_end_of_inset(lines, i): " Find end of inset, where lines[i] is included." return find_end_of(lines, i, "\\begin_inset", "\\end_inset") @@ -35,7 +51,7 @@ def find_end_of_inset(lines, i): # DO NOT do this: # document.body[i] = wrap_insert_ert(...) # wrap_into_ert may returns a multiline string, which should NOT appear -# in document.body. Insetad, do something like this: +# in document.body. Instead, do something like this: # subst = wrap_inset_ert(...) # subst = subst.split('\n') # document.body[i:i+1] = subst @@ -422,6 +438,7 @@ def convert_ltcaption(document): j = find_end_of_inset(document.body, i + 1) if j == -1: document.warning("Malformed LyX document: Could not find end of tabular.") + i += 1 continue nrows = int(document.body[i+1].split('"')[3]) @@ -513,6 +530,7 @@ def convert_tablines(document): j = find_end_of_inset(document.body, i + 1) if j == -1: document.warning("Malformed LyX document: Could not find end of tabular.") + i += 1 continue m = i + 1 @@ -652,6 +670,7 @@ def fix_wrong_tables(document): j = find_end_of_inset(document.body, i + 1) if j == -1: document.warning("Malformed LyX document: Could not find end of tabular.") + i += 1 continue m = i + 1 @@ -774,7 +793,7 @@ def convert_flex(document): document.body[i] = document.body[i].replace('\\begin_inset CharStyle', '\\begin_inset Flex') def revert_flex(document): - "Convert Flex to CharStyle" + "Revert Flex to CharStyle" i = 0 while True: i = find_token(document.body, "\\begin_inset Flex", i) @@ -954,6 +973,8 @@ def remove_inzip_options(document): if j == -1: # should not happen document.warning("Malformed LyX document: Could not find end of graphics inset.") + i += 1 + continue # If there's a inzip param, just remove that k = find_token(document.body, "\tinzipName", i + 1, j) if k != -1: @@ -1242,6 +1263,8 @@ def revert_inset_info(document): if j == -1: # should not happen document.warning("Malformed LyX document: Could not find end of Info inset.") + i += 1 + continue type = 'unknown' arg = '' for k in range(i, j+1): @@ -1577,7 +1600,7 @@ def convert_macro_global(document): "Remove TeX code command \global when it is in front of a macro" # math macros are nowadays already defined \global, so that an additional # \global would make the document uncompilable, see - # http://bugzilla.lyx.org/show_bug.cgi?id=5371 + # http://www.lyx.org/trac/ticket/5371 # We're looking for something like this: # \begin_inset ERT # status collapsed @@ -1761,7 +1784,7 @@ def revert_module_names(document): return newmodlist = [] for mod in modlist: - if modulemap.has_key(mod): + if mod in modulemap: newmodlist.append(modulemap[mod]) else: document.warning("Can't find module %s in the module map!" % mod) @@ -1799,19 +1822,24 @@ def revert_framed_notes(document): if j == -1: # should not happen document.warning("Malformed LyX document: Could not find end of Box inset.") + i += 1 + continue k = find_token(document.body, "status", i + 1, j) if k == -1: document.warning("Malformed LyX document: Missing `status' tag in Box inset.") - return + i = j + continue status = document.body[k] l = find_default_layout(document, i + 1, j) if l == -1: document.warning("Malformed LyX document: Missing `\\begin_layout' in Box inset.") - return + i = j + continue m = find_token(document.body, "\\end_layout", i + 1, j) if m == -1: document.warning("Malformed LyX document: Missing `\\end_layout' in Box inset.") - return + i = j + continue ibox = find_token(document.body, "has_inner_box 1", i + 1, k) pbox = find_token(document.body, "use_parbox 1", i + 1, k) if ibox == -1 and pbox == -1: @@ -1874,7 +1902,8 @@ def revert_nobreakdash(document): j = find_token(document.header, "\\use_amsmath", 0) if j == -1: document.warning("Malformed LyX document: Missing '\\use_amsmath'.") - return + i += 1 + continue document.header[j] = "\\use_amsmath 2" else: i = i + 1 @@ -2048,7 +2077,8 @@ def revert_rotfloat(document): l = find_default_layout(document, i + 1, j) if l == -1: document.warning("Malformed LyX document: Missing `\\begin_layout' in Float inset.") - return + i = j + continue subst = ['\\begin_layout Standard', '\\begin_inset ERT', 'status collapsed', '', @@ -2110,7 +2140,8 @@ def revert_widesideways(document): l = find_default_layout(document, i + 1, j) if l == -1: document.warning("Malformed LyX document: Missing `\\begin_layout' in Float inset.") - return + i = j + continue subst = ['\\begin_layout Standard', '\\begin_inset ERT', 'status collapsed', '', '\\begin_layout Standard', '', '', '\\backslash', @@ -2269,7 +2300,7 @@ def revert_subfig(document): if opt != -1: optend = find_end_of_inset(document.body, opt) if optend == -1: - document.warning("Malformed lyx document: Missing '\\end_inset' (OptArg).") + document.warning("Malformed LyX document: Missing '\\end_inset' (OptArg).") return optc = find_default_layout(document, opt, optend) if optc == -1: @@ -2379,6 +2410,7 @@ def revert_spaceinset(document): j = find_end_of_inset(document.body, i) if j == -1: document.warning("Malformed LyX document: Could not find end of space inset.") + i += 1 continue document.body[i] = document.body[i].replace('\\begin_inset Space', '\\InsetSpace') del document.body[j] @@ -2481,6 +2513,7 @@ def revert_protected_hfill(document): j = find_end_of_inset(document.body, i) if j == -1: document.warning("Malformed LyX document: Could not find end of space inset.") + i += 1 continue del document.body[j] subst = document.body[i].replace('\\begin_inset Space \\hspace*{\\fill}', \ @@ -2502,6 +2535,7 @@ def revert_leftarrowfill(document): j = find_end_of_inset(document.body, i) if j == -1: document.warning("Malformed LyX document: Could not find end of space inset.") + i += 1 continue del document.body[j] subst = document.body[i].replace('\\begin_inset Space \\leftarrowfill{}', \ @@ -2523,6 +2557,7 @@ def revert_rightarrowfill(document): j = find_end_of_inset(document.body, i) if j == -1: document.warning("Malformed LyX document: Could not find end of space inset.") + i += 1 continue del document.body[j] subst = document.body[i].replace('\\begin_inset Space \\rightarrowfill{}', \ @@ -2544,6 +2579,7 @@ def revert_upbracefill(document): j = find_end_of_inset(document.body, i) if j == -1: document.warning("Malformed LyX document: Could not find end of space inset.") + i += 1 continue del document.body[j] subst = document.body[i].replace('\\begin_inset Space \\upbracefill{}', \ @@ -2565,6 +2601,7 @@ def revert_downbracefill(document): j = find_end_of_inset(document.body, i) if j == -1: document.warning("Malformed LyX document: Could not find end of space inset.") + i += 1 continue del document.body[j] subst = document.body[i].replace('\\begin_inset Space \\downbracefill{}', \ @@ -2632,6 +2669,7 @@ def revert_pagebreaks(document): j = find_end_of_inset(document.body, i) if j == -1: document.warning("Malformed LyX document: Could not find end of Newpage inset.") + i += 1 continue del document.body[j] document.body[i] = document.body[i].replace('\\begin_inset Newpage newpage', '\\newpage') @@ -2668,6 +2706,7 @@ def revert_linebreaks(document): j = find_end_of_inset(document.body, i) if j == -1: document.warning("Malformed LyX document: Could not find end of Newline inset.") + i += 1 continue del document.body[j] document.body[i] = document.body[i].replace('\\begin_inset Newline newline', '\\newline') @@ -2840,7 +2879,7 @@ def update_apa_styles(document): def convert_paper_sizes(document): ' exchange size options legalpaper and executivepaper to correct order ' - # routine is needed to fix http://bugzilla.lyx.org/show_bug.cgi?id=4868 + # routine is needed to fix http://www.lyx.org/trac/ticket/4868 i = 0 j = 0 i = find_token(document.header, "\\papersize executivepaper", 0)