diff --git a/lib/lyx2lyx/LyX.py b/lib/lyx2lyx/LyX.py index 678647b4ac..f0aa236dbd 100644 --- a/lib/lyx2lyx/LyX.py +++ b/lib/lyx2lyx/LyX.py @@ -144,7 +144,7 @@ def get_encoding(language, inputencoding, format, cjk_encoding): # class LyX_base: """This class carries all the information of the LyX file.""" - + def __init__(self, end_format = 0, input = "", output = "", error = "", debug = default_debug__, try_hard = 0, cjk_encoding = '', language = "english", encoding = "auto"): @@ -222,10 +222,10 @@ class LyX_base: line = trim_eol(line) if check_token(line, '\\end_preamble'): break - + if line.split()[:0] in ("\\layout", "\\begin_layout", "\\begin_body"): - + self.warning("Malformed LyX file:" "Missing '\\end_preamble'." "\nAdding it now and hoping" @@ -247,6 +247,12 @@ class LyX_base: self.header.append(line) + i = find_token(self.header, '\\textclass', 0) + if i == -1: + self.warning("Malformed LyX file: Missing '\\textclass'.") + i = find_token(self.header, '\\lyxformat', 0) + 1 + self.header[i:i] = ['\\textclass article'] + self.textclass = get_value(self.header, "\\textclass", 0) self.backend = get_backend(self.textclass) self.format = self.read_format() @@ -284,10 +290,7 @@ class LyX_base: if self.preamble: i = find_token(self.header, '\\textclass', 0) + 1 preamble = ['\\begin_preamble'] + self.preamble + ['\\end_preamble'] - if i == 0: - self.error("Malformed LyX file: Missing '\\textclass'.") - else: - header = self.header[:i] + preamble + self.header[i:] + header = self.header[:i] + preamble + self.header[i:] else: header = self.header @@ -309,7 +312,7 @@ class LyX_base: try: gzip.open(input).readline() self.input = gzip.open(input) - self.output = gzip.GzipFile(mode="wb", fileobj=self.output) + self.output = gzip.GzipFile(mode="wb", fileobj=self.output) except: self.input = open(input) else: @@ -601,7 +604,7 @@ class LyX_base: # skip paragraph parameters while not self.body[k].strip() or self.body[k].split()[0] \ in allowed_parameters: - k += 1 + k += 1 while k < j: if check_token(self.body[k], '\\begin_inset'): diff --git a/lib/lyx2lyx/parser_tools.py b/lib/lyx2lyx/parser_tools.py index 78459d21d9..a2fea7af09 100644 --- a/lib/lyx2lyx/parser_tools.py +++ b/lib/lyx2lyx/parser_tools.py @@ -84,7 +84,7 @@ def find_tokens(lines, tokens, start, end = 0, exact = False): if len(x) < len(y): continue if x[:len(y)] == y: - return i + return i else: if lines[i][:len(token)] == token: return i @@ -149,7 +149,7 @@ def get_value(lines, token, start, end = 0, default = ""): i = find_token_exact(lines, token, start, end) if i == -1: - return "" + return default if len(lines[i].split()) > 1: return lines[i].split()[1] else: