("1_1_6fix3", [218], ["1.1.6fix3","1.1.6fix4","1.1"]),
("1_2", [220], ["1.2.0","1.2.1","1.2.3","1.2.4","1.2"]),
("1_3", [221], ["1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3"]),
- ("1_4", range(223,241), ["1.4.0cvs","1.4"])]
+ ("1_4", range(223,243), ["1.4.0cvs","1.4"])]
def formats_list():
#
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_level):
+ def __init__(self, end_format = 0, input = "", output = "", error = "", debug = default_debug_level, try_hard = 0):
"""Arguments:
end_format: final format that the file should be converted. (integer)
input: the name of the input source, if empty resort to standard input.
self.err = sys.stderr
self.debug = debug
+ self.try_hard = try_hard
if end_format:
self.end_format = self.lyxformat(end_format)
self.textclass = "article"
self.header = []
self.body = []
+ self.status = 0
def warning(self, message, debug_level= default_debug_level):
" Emits warning to self.error, if the debug_level is less than the self.debug."
if debug_level <= self.debug:
- self.err.write(message + "\n")
+ self.err.write("Warning: " + message + "\n")
def error(self, message):
- " Emits a warning and exist incondicionally."
+ " Emits a warning and exits if not in try_hard mode."
self.warning(message)
- self.warning("Quiting.")
- sys.exit(1)
+ if not self.try_hard:
+ self.warning("Quiting.")
+ sys.exit(1)
+
+ self.status = 2
def read(self):
if not preamble:
line = string.strip(line)
- if not line and not preamble:
- break
+ if not preamble:
+ if not line:
+ continue
+
+ if string.split(line)[0] in ("\\layout", "\\begin_layout", "\\begin_body"):
+ self.body.append(line)
+ break
self.header.append(line)
for conv in table:
init_t = time.time()
- conv(self)
- self.warning("%lf: Elapsed time on %s" % (time.time() - init_t, str(conv)),
- default_debug_level + 1)
+ try:
+ conv(self)
+ except:
+ self.warning("An error ocurred in %s, %s" % (version, str(conv)),
+ default_debug_level)
+ if not self.try_hard:
+ raise
+ self.status = 2
+ else:
+ self.warning("%lf: Elapsed time on %s" % (time.time() - init_t, str(conv)),
+ default_debug_level + 1)
self.format = version
if self.end_format == self.format:
" Returns the TOC of this LyX document."
paragraphs_filter = {'Title' : 0,'Chapter' : 1, 'Section' : 2, 'Subsection' : 3, 'Subsubsection': 4}
allowed_insets = ['Quotes']
+ allowed_parameters = '\\paragraph_spacing', '\\noindent', '\\align', '\\labelwidthstring', "\\start_of_appendix"
sections = []
for section in paragraphs_filter.keys():
k = i + 1
# skip paragraph parameters
- while not self.body[k] or self.body[k][0] == '\\':
+ while not string.strip(self.body[k]) and string.split(self.body[k])[0] in allowed_parameters:
k = k +1
while k < j:
class File(LyX_Base):
" This class reads existing LyX files."
- def __init__(self, end_format = 0, input = "", output = "", error = "", debug = default_debug_level):
- LyX_Base.__init__(self, end_format, input, output, error, debug)
+ def __init__(self, end_format = 0, input = "", output = "", error = "", debug = default_debug_level, try_hard = 0):
+ LyX_Base.__init__(self, end_format, input, output, error, debug, try_hard)
self.read()