]> git.lyx.org Git - lyx.git/blobdiff - lib/scripts/prefs2prefs.py
Don't use widest label for numerical citations.
[lyx.git] / lib / scripts / prefs2prefs.py
index 046c58f36a1723789009412388346fd391814891..3026d061637e0acb4f45fa9b804e59f452d5568b 100644 (file)
@@ -48,7 +48,7 @@ def trim_bom(line):
 
 def read(source):
        " Read input file and strip lineendings."
-       lines = source.read().splitlines()
+       lines = source.read().splitlines() or ['']
        lines[0] = trim_bom(lines[0])
        return lines
 
@@ -100,16 +100,16 @@ def update_format(lines):
        " Writes new format line "
        (found, format_line) = find_format_line(lines)
        if not found:
-               lines.insert(format_line, "Format 1")
+               lines[format_line:format_line] = ("Format 1", "")
                return
 
        line = lines[format_line]
-       m = re_format.search(l)
+       m = re_format.search(line)
        if not m:
                sys.stderr.write("Couldn't match format line!\n" + line + "\n")
                sys.exit(1)
        format = int(m.group(1))
-       lines[i] = "Format " + str(format + 1)
+       lines[format_line] = "Format " + str(format + 1)
 
 
 #
@@ -120,7 +120,7 @@ def usage():
        print "or: %s [-l] [-p] <infile >outfile" % sys.argv[0]
        print "  -l: convert LFUNs (bind and ui files)"
        print "  -p: convert preferences"
-       print "Note that one of -l and -p is required."
+       print "Note that exactly one of -l and -p is required."
 
 
 def main(argv):
@@ -137,8 +137,8 @@ def main(argv):
                source = sys.stdin
                output = sys.stdout
        elif len(args) == 2:
-               source = open(args[1], 'rb')
-               output = open(args[2], 'wb')
+               source = open(args[0], 'rb')
+               output = open(args[1], 'wb')
                opened_files = True
        else:
                usage()
@@ -149,30 +149,42 @@ def main(argv):
 
        for (opt, param) in options:
                if opt == "-l":
-                       from prefs2prefs_lfuns import conversions, current_format
+                       from prefs2prefs_lfuns import conversions
                elif opt == "-p":
-                       from prefs2prefs_prefs import conversions, current_format
+                       from prefs2prefs_prefs import conversions
        
        if not conversions:
                usage()
-               print "\nNeither -l nor -p given"
+               print "\nNeither -l nor -p given."
+               sys.exit(1)
+       elif len(options) > 1:
+               usage()
+               print "\nOnly one of -l or -p should be given."
                sys.exit(1)
 
+       current_format = len(conversions)
        lines = read(source)
        format = get_format(lines)
 
        while format < current_format:
-               for c in conversions[format]:
+               target_format, convert = conversions[format]
+               old_format = format
+
+               # make sure the conversion list is sequential
+               if int(old_format) + 1 != target_format:
+                       sys.stderr.write("Something is wrong with the conversion chain.\n")
+                       sys.exit(1)
+
+               for c in convert:
                        for i in range(len(lines)):
                                (update, newline) = c(lines[i])
                                if update:
                                        lines[i] = newline
 
                update_format(lines)
+               format = get_format(lines)
 
                # sanity check
-               old_format = format
-               format = get_format(lines)
                if int(old_format) + 1 != int(format):
                        sys.stderr.write("Failed to convert to new format!\n")
                        sys.exit(1)