]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/lyx_2_0.py
Math.lyx: fix #6369
[lyx.git] / lib / lyx2lyx / lyx_2_0.py
index 96e681204cafb345d2510ed931d1456922c1621d..cd665bfd1db782f0738ec8ad84db2df33306de5d 100644 (file)
@@ -950,36 +950,37 @@ def revert_hspace_glue_lengths(document):
 def convert_author_id(document):
     " Add the author_id to the \\author definition and make sure 0 is not used"
     i = 0
-    j = 1\r
+    j = 1
     while True:
         i = find_token(document.header, "\\author", i)
         if i == -1:
             break
         
-        author = document.header[i].split(' ')
-        name = '\"\"'
-        if len(author) >= 2:
-            name = author[1]\r
-        email = ''\r
-        if len(author) == 3:\r
-            email = author[2]              \r
-        document.header[i] = "\\author %i %s %s" % (j, name, email)\r
+        r = re.compile(r'(\\author) (\".*\")\s?(.*)$')
+        m = r.match(document.header[i])
+        if m != None:
+            name = m.group(2)
+            
+            email = ''
+            if m.lastindex == 3:
+                email = m.group(3)
+            document.header[i] = "\\author %i %s %s" % (j, name, email)
         j = j + 1
-        i = i + 1\r
-        \r
-    k = 0\r
-    while True:\r
-        k = find_token(document.body, "\\change_", k)\r
-        if k == -1:\r
-            break\r
-\r
-        change = document.body[k].split(' ');\r
-        if len(change) == 3:\r
-            type = change[0]\r
-            author_id = int(change[1])\r
-            time = change[2]\r
-            document.body[k] = "%s %i %s" % (type, author_id + 1, time)\r
-        k = k + 1\r
+        i = i + 1
+        
+    k = 0
+    while True:
+        k = find_token(document.body, "\\change_", k)
+        if k == -1:
+            break
+
+        change = document.body[k].split(' ');
+        if len(change) == 3:
+            type = change[0]
+            author_id = int(change[1])
+            time = change[2]
+            document.body[k] = "%s %i %s" % (type, author_id + 1, time)
+        k = k + 1
 
 def revert_author_id(document):
     " Remove the author_id from the \\author definition "
@@ -990,16 +991,18 @@ def revert_author_id(document):
         i = find_token(document.header, "\\author", i)
         if i == -1:
             break
-        author = document.header[i].split(' ')
-        name = '\"\"'
-        if len(author) >= 3:
-            author_id = int(author[1])
+        
+        r = re.compile(r'(\\author) (\d+) (\".*\")\s?(.*)$')
+        m = r.match(document.header[i])
+        if m != None:
+            author_id = int(m.group(2))
             idmap[author_id] = j
-            name = author[2]
-        email = ''
-        if len(author) == 4:
-            email = author[3]
-        document.header[i] = "\\author %s %s" % (name, email)
+            name = m.group(3)
+            
+            email = ''
+            if m.lastindex == 4:
+                email = m.group(4)
+            document.header[i] = "\\author %s %s" % (name, email)
         i = i + 1
         j = j + 1
 
@@ -1008,16 +1011,126 @@ def revert_author_id(document):
         k = find_token(document.body, "\\change_", k)
         if k == -1:
             break
-\r
-        change = document.body[k].split(' ');\r
-        if len(change) == 3:\r
-            type = change[0]\r
-            author_id = int(change[1])\r
-            time = change[2]\r
+
+        change = document.body[k].split(' ');
+        if len(change) == 3:
+            type = change[0]
+            author_id = int(change[1])
+            time = change[2]
             document.body[k] = "%s %i %s" % (type, idmap[author_id], time)
         k = k + 1
 
 
+def revert_suppress_date(document):
+    " Revert suppressing of default document date to preamble code "
+    i = 0
+    while True:
+      i = find_token(document.header, "\\suppress_date", i)
+      if i == -1:
+          break
+      # remove the preamble line and write to the preamble
+      # when suppress_date was true
+      date = get_value(document.header, "\\suppress_date", i)
+      if date == "true":
+          add_to_preamble(document, ["% this command was inserted by lyx2lyx"])
+          add_to_preamble(document, ["\\date{}"])
+      del document.header[i]
+      i = i + 1
+
+
+def revert_mhchem(document):
+    "Revert mhchem loading to preamble code"
+    i = 0
+    j = 0
+    k = 0
+    i = find_token(document.header, "\\use_mhchem 1", 0)
+    if i != -1:
+        mhchem = "auto"
+    else:
+        i = find_token(document.header, "\\use_mhchem 2", 0)
+        if i != -1:
+            mhchem = "on"
+    if mhchem == "auto":
+        j = find_token(document.body, "\\cf{", 0)
+        if j != -1:
+            mhchem = "on"
+        else:
+            j = find_token(document.body, "\\ce{", 0)
+            if j != -1:
+                mhchem = "on"
+    if mhchem == "on":
+        add_to_preamble(document, ["% this command was inserted by lyx2lyx"])
+        add_to_preamble(document, ["\\PassOptionsToPackage{version=3}{mhchem}"])
+        add_to_preamble(document, ["\\usepackage{mhchem}"])
+    k = find_token(document.header, "\\use_mhchem", 0)
+    if k == -1:
+        document.warning("Malformed LyX document: Could not find mhchem setting.")
+        return
+    del document.header[k]
+
+
+def revert_fontenc(document):
+    " Remove fontencoding param "
+    i = find_token(document.header, '\\fontencoding', 0)
+    if i == -1:
+        document.warning("Malformed LyX document: Missing \\fontencoding.")
+        return
+    del document.header[i]
+
+
+def merge_gbrief(document):
+    " Merge g-brief-en and g-brief-de to one class "
+
+    if document.textclass != "g-brief-de":
+        if document.textclass == "g-brief-en":
+            document.textclass = "g-brief"
+            document.set_textclass()
+        return
+
+    obsoletedby = { "Brieftext":       "Letter",
+                    "Unterschrift":    "Signature",
+                    "Strasse":         "Street",
+                    "Zusatz":          "Addition",
+                    "Ort":             "Town",
+                    "Land":            "State",
+                    "RetourAdresse":   "ReturnAddress",
+                    "MeinZeichen":     "MyRef",
+                    "IhrZeichen":      "YourRef",
+                    "IhrSchreiben":    "YourMail",
+                    "Telefon":         "Phone",
+                    "BLZ":             "BankCode",
+                    "Konto":           "BankAccount",
+                    "Postvermerk":     "PostalComment",
+                    "Adresse":         "Address",
+                    "Datum":           "Date",
+                    "Betreff":         "Reference",
+                    "Anrede":          "Opening",
+                    "Anlagen":         "Encl.",
+                    "Verteiler":       "cc",
+                    "Gruss":           "Closing"}
+    i = 0
+    while 1:
+        i = find_token(document.body, "\\begin_layout", i)
+        if i == -1:
+            break
+
+        layout = document.body[i][14:]
+        if layout in obsoletedby:
+            document.body[i] = "\\begin_layout " + obsoletedby[layout]
+
+        i += 1
+        
+    document.textclass = "g-brief"
+    document.set_textclass()
+
+
+def revert_gbrief(document):
+    " Revert g-brief to g-brief-en "
+    if document.textclass == "g-brief":
+        document.textclass = "g-brief-en"
+        document.set_textclass()
+
+
 ##
 # Conversion hub
 #
@@ -1046,10 +1159,18 @@ convert = [[346, []],
            [366, []],
            [367, []],
            [368, []],
-           [369, [convert_author_id]]
+           [369, [convert_author_id]],
+           [370, []],
+           [371, []],
+           [372, []],
+           [373, [merge_gbrief]]
           ]
 
-revert =  [[368, [revert_author_id]],
+revert =  [[372, [revert_gbrief]],
+           [371, [revert_fontenc]],
+           [370, [revert_mhchem]],
+           [369, [revert_suppress_date]],
+           [368, [revert_author_id]],
            [367, [revert_hspace_glue_lengths]],
            [366, [revert_percent_vspace_lengths, revert_percent_hspace_lengths]],
            [365, [revert_percent_skip_lengths]],