]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/lyx_2_0.py
Factor out some common code.
[lyx.git] / lib / lyx2lyx / lyx_2_0.py
index b628d8bb1d14fedb1778a0c2a2745f0e3f9a2d3e..79f9f1be2f17c2fa826bf22c751038cbea3b0f8f 100644 (file)
@@ -24,7 +24,8 @@ import unicodedata
 import sys, os
 
 from parser_tools import find_token, find_end_of, find_tokens, \
-  find_end_of_inset, find_end_of_layout, get_value, get_value_string
+  find_end_of_inset, find_end_of_layout, find_token_backwards, \
+  get_containing_inset, get_value, get_value_string
   
 from lyx2lyx_tools import add_to_preamble, insert_to_preamble, \
   put_cmd_in_ert, lyx2latex, latex_length, revert_flex_inset, \
@@ -1537,8 +1538,8 @@ def convert_prettyref(document):
                        document.warning("Malformed LyX document: No end of InsetRef!")
                        i += 1
                        continue
-               k = find_token(document.body, "LatexCommand prettyref", i)
-               if k != -1 and k < j:
+               k = find_token(document.body, "LatexCommand prettyref", i, j)
+               if k != -1:
                        document.body[k] = "LatexCommand formatted"
                i = j + 1
        document.header.insert(-1, "\\use_refstyle 0")
@@ -1559,8 +1560,8 @@ def revert_refstyle(document):
                        document.warning("Malformed LyX document: No end of InsetRef")
                        i += 1
                        continue
-               k = find_token(document.body, "LatexCommand formatted", i)
-               if k != -1 and k < j:
+               k = find_token(document.body, "LatexCommand formatted", i, j)
+               if k != -1:
                        document.body[k] = "LatexCommand prettyref"
                i = j + 1
        i = find_token(document.header, "\\use_refstyle", 0)
@@ -1585,23 +1586,15 @@ def revert_nameref(document):
       cmdloc = i
       i += 1
       # Make sure it is actually in an inset!
-      # We could just check document.lines[i-1], but that relies
-      # upon something that might easily change.
-      # We'll look back a few lines.
-      stins = cmdloc - 10
-      if stins < 0:
-        stins = 0
-      stins = find_token(document.body, "\\begin_inset CommandInset ref", stins)
-      if stins == -1 or stins > cmdloc:
+      # A normal line could begin with "LatexCommand nameref"!
+      stins, endins = get_containing_inset(document.body, cmdloc, \
+          "\\begin_inset CommandInset ref")
+      if stins == -1:
         continue
-      endins = find_end_of_inset(document.body, stins)
-      if endins == -1:
-        document.warning("Can't find end of inset at line " + stins + "!!")
-        continue
-      if endins < cmdloc:
-        continue
-      refline = find_token(document.body, "reference", stins)
-      if refline == -1 or refline > endins:
+
+      # ok, so it is in an InsetRef
+      refline = find_token(document.body, "reference", stins, endins)
+      if refline == -1:
         document.warning("Can't find reference for inset at line " + stinst + "!!")
         continue
       m = rx.match(document.body[refline])
@@ -1610,10 +1603,9 @@ def revert_nameref(document):
         continue
       foundone = True
       ref = m.group(1)
-      newcontent = ['\\begin_inset ERT', 'status collapsed', '', \
-        '\\begin_layout Plain Layout', '', '\\backslash', \
-        cmd + '{' + ref + '}', '\\end_layout', '', '\\end_inset']
+      newcontent = put_cmd_in_ert('\\' + cmd + '{' + ref + '}')
       document.body[stins:endins + 1] = newcontent
+
   if foundone:
     add_to_preamble(document, "\usepackage{nameref}")
 
@@ -1631,20 +1623,9 @@ def remove_Nameref(document):
     i += 1
     
     # Make sure it is actually in an inset!
-    # We could just check document.lines[i-1], but that relies
-    # upon something that might easily change.
-    # We'll look back a few lines.
-    stins = cmdloc - 10
-    if stins < 0:
-      stins = 0
-    stins = find_token(document.body, "\\begin_inset CommandInset ref", stins)
-    if stins == -1 or stins > cmdloc:
-      continue
-    endins = find_end_of_inset(document.body, stins)
-    if endins == -1:
-      document.warning("Can't find end of inset at line " + stins + "!!")
-      continue
-    if endins < cmdloc:
+    stins, endins = get_containing_inset(document.body, \
+        cmdloc, "\\begin_inset CommandInset ref")
+    if stins == -1:
       continue
     document.body[cmdloc] = "LatexCommand nameref"