-#! /usr/bin/env python
# -*- coding: utf-8 -*-
# file prefs2prefs-lfuns.py
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, [])
+no_match = (False, "")
def simple_renaming(line, old, new):
if line.find(old) == -1:
return (True, line)
+def simple_remove(line, old):
+ if line.find(old) == -1:
+ return no_match
+ return (True, "")
+
+
def next_inset_modify(line):
return simple_renaming(line, "next-inset-modify", "inset-modify")
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+)(.*)$')
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)
+
+
+def paragraph_break(line):
+ return simple_renaming(line, "break-paragraph", "paragraph-break")
+
+
+def tab_group_close(line):
+ return simple_renaming(line, "close-tab-group", "tab-group-close")
+
+
+def view_split(line):
+ return simple_renaming(line, "split-view", "view-split")
+
+
+def label_copy_as_reference(line):
+ return simple_renaming(line, "copy-label-as-reference", "label-copy-as-reference")
+
+
+def remove_print_support(line):
+ return simple_remove(line, "dialog-show print")
-#
#
###########################################################
# 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, LyX 2.0
next_inset_toggle,
next_inset_modify,
optional_insert,
notes_mutate,
- all_insets_toggle
- ] # end conversions for format 0
+ all_insets_toggle,
+ line_insert,
+ toc_insert,
+ paragraph_spacing,
+ tabular_feature,
+ Bar2bar
+ ]],
+ [ 2, [ # list of conversions to format 2, LyX 2.1
+ paragraph_break,
+ tab_group_close,
+ view_split,
+ label_copy_as_reference
+ ]],
+ [ 3, [ # list of conversions to format 3, LyX 2.2
+ remove_print_support
+ ]]
]
-