import sys, re
-current_format = 1
-
###########################################################
#
# Actual converter functions
#
# These accept a line as argument and should return a list:
# (bool, newline)
-# where the bool indicates whether we changed anything. In
-# that case, one normally returns: (False, []).
+# where the bool indicates whether we changed anything. If not,
+# one normally returns: (False, []).
no_match = (False, [])
def optional_insert(line):
- return simple_renaming(line, "argument-insert", "optional-insert")
+ return simple_renaming(line, "optional-insert", "argument-insert")
-re_nm = re.compile(r'^(.*)notes-mutate\s+(\w+)\s+(\w+)(.*)')
+re_nm = re.compile(r'^(.*)notes-mutate\s+(\w+)\s+(\w+)(.*)$')
def notes_mutate(line):
m = re_nm.search(line)
if not m:
return no_match
- prerix = m.group(1)
+ prefix = m.group(1)
source = m.group(2)
target = m.group(3)
suffix = m.group(4)
return (True, newline)
+re_ait = re.compile(r'^(.*)all-insets-toggle\s+(\w+)(?:\s+(\w+))?(.*)$')
+def all_insets_toggle(line):
+ m = re_ait.search(line)
+ if not m:
+ return no_match
+
+ prefix = m.group(1)
+ action = m.group(2)
+ target = m.group(3)
+ suffix = m.group(4)
+
+ # we need to transform the target to match the inset layout names
+ # this will not be perfect
+ if target == "ert":
+ target = "ERT"
+ elif target == None:
+ target = "*"
+ elif target == "tabular":
+ # There does not seem to be an InsetLayout for tables, so
+ # I do not know what to do here. If anyone does, then please
+ # fix this. For now, we just have to remove this line.
+ return (True, "")
+ else:
+ target = target.capitalize()
+
+ newline = prefix + "inset-forall " + target + " inset-toggle " + \
+ action + suffix
+ return (True, newline)
+
+
+re_li = re.compile(r'^(.*)\bline-insert\b(.*)$')
+def line_insert(line):
+ m = re_li.search(line)
+ if not m:
+ return no_match
+ newline = m.group(1) + \
+ "inset-insert line rule height 0.25ex width 100col% \\end_inset" + \
+ m.group(2)
+ return (True, newline)
+
+
+def toc_insert(line):
+ return simple_renaming(line, "toc-insert", "inset-insert toc")
+
+
+re_ps = re.compile(r'^(.*)paragraph-spacing\s+(default|single|onehalf|double)\b(.*)$')
+re_psother = re.compile(r'^(.*)paragraph-spacing\s+other\s+(\d+\.\d?|\d?\.\d+|\d+)(.*)$')
+def paragraph_spacing(line):
+ # possible args: default, single, onehalf, double, other FLOAT
+ m = re_ps.search(line)
+ if m:
+ arg = m.group(2)
+ newline = m.group(1) + "paragraph-params \\paragraph-spacing " + arg + \
+ m.group(3)
+ return (True, newline)
+
+ m = re_psother.search(line)
+ if not m:
+ return no_match
+
+ arg = m.group(2)
+ newline = m.group(1) + "paragraph-params \\paragraph-spacing other " + \
+ arg + m.group(3)
+ return (True, newline)
+
+
+def tabular_feature(line):
+ return simple_renaming(line, "tabular-feature", "inset-modify tabular")
+
+re_Bar2bar = re.compile(r'^(\\(?:bind|unbind))\s+"([^"]*)Bar"(\s+"[^"]+")')
+def Bar2bar(line):
+ m = re_Bar2bar.search(line)
+ if not m:
+ return no_match
+
+ btype = m.group(1)
+ mod = m.group(2)
+ rest = m.group(3)
+ newline = btype + " \"" + mod + "bar\"" + rest
+ return (True, newline)
+
#
#
###########################################################
# Conversion chain
conversions = [
- [ # this will be a long list of conversions for format 0
+ [ 1, [ # this will be a long list of conversions to format 1
next_inset_toggle,
next_inset_modify,
optional_insert,
- notes_mutate
- ] # end conversions for format 0
+ notes_mutate,
+ all_insets_toggle,
+ line_insert,
+ toc_insert,
+ paragraph_spacing,
+ tabular_feature,
+ Bar2bar
+ ]],
]