fix bug 4639

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23813 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
José Matox 2008-03-18 19:41:50 +00:00
parent e01e14872d
commit 6c57005797
2 changed files with 14 additions and 11 deletions

View File

@ -144,7 +144,7 @@ def get_encoding(language, inputencoding, format, cjk_encoding):
# #
class LyX_base: class LyX_base:
"""This class carries all the information of the LyX file.""" """This class carries all the information of the LyX file."""
def __init__(self, end_format = 0, input = "", output = "", error = "", def __init__(self, end_format = 0, input = "", output = "", error = "",
debug = default_debug__, try_hard = 0, cjk_encoding = '', debug = default_debug__, try_hard = 0, cjk_encoding = '',
language = "english", encoding = "auto"): language = "english", encoding = "auto"):
@ -222,10 +222,10 @@ class LyX_base:
line = trim_eol(line) line = trim_eol(line)
if check_token(line, '\\end_preamble'): if check_token(line, '\\end_preamble'):
break break
if line.split()[:0] in ("\\layout", if line.split()[:0] in ("\\layout",
"\\begin_layout", "\\begin_body"): "\\begin_layout", "\\begin_body"):
self.warning("Malformed LyX file:" self.warning("Malformed LyX file:"
"Missing '\\end_preamble'." "Missing '\\end_preamble'."
"\nAdding it now and hoping" "\nAdding it now and hoping"
@ -247,6 +247,12 @@ class LyX_base:
self.header.append(line) 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.textclass = get_value(self.header, "\\textclass", 0)
self.backend = get_backend(self.textclass) self.backend = get_backend(self.textclass)
self.format = self.read_format() self.format = self.read_format()
@ -284,10 +290,7 @@ class LyX_base:
if self.preamble: if self.preamble:
i = find_token(self.header, '\\textclass', 0) + 1 i = find_token(self.header, '\\textclass', 0) + 1
preamble = ['\\begin_preamble'] + self.preamble + ['\\end_preamble'] preamble = ['\\begin_preamble'] + self.preamble + ['\\end_preamble']
if i == 0: header = self.header[:i] + preamble + self.header[i:]
self.error("Malformed LyX file: Missing '\\textclass'.")
else:
header = self.header[:i] + preamble + self.header[i:]
else: else:
header = self.header header = self.header
@ -309,7 +312,7 @@ class LyX_base:
try: try:
gzip.open(input).readline() gzip.open(input).readline()
self.input = gzip.open(input) self.input = gzip.open(input)
self.output = gzip.GzipFile(mode="wb", fileobj=self.output) self.output = gzip.GzipFile(mode="wb", fileobj=self.output)
except: except:
self.input = open(input) self.input = open(input)
else: else:
@ -601,7 +604,7 @@ class LyX_base:
# skip paragraph parameters # skip paragraph parameters
while not self.body[k].strip() or self.body[k].split()[0] \ while not self.body[k].strip() or self.body[k].split()[0] \
in allowed_parameters: in allowed_parameters:
k += 1 k += 1
while k < j: while k < j:
if check_token(self.body[k], '\\begin_inset'): if check_token(self.body[k], '\\begin_inset'):

View File

@ -84,7 +84,7 @@ def find_tokens(lines, tokens, start, end = 0, exact = False):
if len(x) < len(y): if len(x) < len(y):
continue continue
if x[:len(y)] == y: if x[:len(y)] == y:
return i return i
else: else:
if lines[i][:len(token)] == token: if lines[i][:len(token)] == token:
return i return i
@ -149,7 +149,7 @@ def get_value(lines, token, start, end = 0, default = ""):
i = find_token_exact(lines, token, start, end) i = find_token_exact(lines, token, start, end)
if i == -1: if i == -1:
return "" return default
if len(lines[i].split()) > 1: if len(lines[i].split()) > 1:
return lines[i].split()[1] return lines[i].split()[1]
else: else: