# where the Bool says if we've modified anything and the NewLine is
# the new line, if so, which will be used to replace the old line.
+import re
+
###########################################################
#
# Conversion chain
+def simple_renaming(line, old, new):
+ if line.find(old) == -1:
+ return no_match
+ line = line.replace(old, new)
+ return (True, line)
+
no_match = (False, [])
+########################
+### Format 1 conversions
+
def remove_obsolete(line):
- tags = ("\\use_tempdir", "\\spell_command", "\\personal_dictionary",
- "\\plaintext_roff_command", "\\use_alt_language",
- "\\use_escape_chars", "\\use_input_encoding",
- "\\use_personal_dictionary", "\\use_pspell",
- "\\use_spell_lib")
- line = line.lstrip()
- for tag in tags:
- if line.startswith(tag):
- return (True, "")
- return no_match
+ tags = ("\\use_tempdir", "\\spell_command", "\\personal_dictionary",
+ "\\plaintext_roff_command", "\\use_alt_language",
+ "\\use_escape_chars", "\\use_input_encoding",
+ "\\use_personal_dictionary", "\\use_pspell",
+ "\\use_spell_lib")
+ line = line.lstrip()
+ for tag in tags:
+ if line.startswith(tag):
+ return (True, "")
+ return no_match
+
+def language_use_babel(line):
+ if not line.startswith("\language_use_babel"):
+ return no_match
+ re_lub = re.compile(r'^\\language_use_babel\s+"?(true|false)')
+ m = re_lub.match(line)
+ val = m.group(1)
+ newval = '0'
+ if val == 'false':
+ newval = '3'
+ newline = "\\language_package_selection " + newval
+ return (True, newline)
+
+def language_package(line):
+ return simple_renaming(line, "\\language_package", "\\language_custom_package")
+
+lfre = re.compile(r'^\\converter\s+"?(\w+)"?\s+"?(\w+)"?\s+"([^"]*?)"\s+"latex"')
+def latex_flavor(line):
+ if not line.startswith("\\converter"):
+ return no_match
+ m = lfre.match(line)
+ if not m:
+ return no_match
+ conv = m.group(1)
+ fmat = m.group(2)
+ args = m.group(3)
+ flavor = "pdflatex"
+ if conv in ("platex", "xetex", "luatex"):
+ flavor = conv
+ return (True,
+ "\\converter \"%s\" \"%s\" \"%s\" \"latex=%s\"" % (conv, fmat, args, flavor))
+
+
+########################
conversions = [
[ # this will be a long list of conversions for format 0
- remove_obsolete
+ latex_flavor,
+ remove_obsolete,
+ language_use_babel,
+ language_package
] # end conversions for format 0
]