]> git.lyx.org Git - features.git/commitdiff
Fix unused get_containing_inset and get_containing layout parser methods and use...
authorJuergen Spitzmueller <spitz@lyx.org>
Mon, 3 Dec 2012 07:42:26 +0000 (08:42 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Mon, 3 Dec 2012 07:42:26 +0000 (08:42 +0100)
lib/lyx2lyx/lyx_2_1.py
lib/lyx2lyx/parser_tools.py

index f6ac766b8c11a90c4942221104af6bea6d55ab2a..e7b7c6ef278bb15937d5e2ef4203c5418ad78a13 100644 (file)
@@ -25,9 +25,9 @@ import sys, os
 
 # Uncomment only what you need to import, please.
 
-from parser_tools import del_token, find_token, find_token_backwards, find_end_of, find_end_of_inset, \
-    find_end_of_layout, find_re, get_option_value, get_value, get_quoted_value, \
-    set_option_value
+from parser_tools import del_token, find_token, find_token_backwards, find_end_of, \
+    find_end_of_inset, find_end_of_layout, find_re, get_option_value, get_containing_layout, \
+    get_value, get_quoted_value, set_option_value
 
 #from parser_tools import find_token, find_end_of, find_tokens, \
   #find_token_exact, find_end_of_inset, find_end_of_layout, \
@@ -1208,25 +1208,20 @@ def convert_latexargs(document):
             i = i + 1
             continue
         
-        # Find beginning and end of the containing paragraph
-        parbeg = find_token_backwards(document.body, "\\begin_layout", i)
-        while get_value(document.body, "\\begin_layout", parbeg) == "Plain Layout":
-            # Probably a preceding inset. Continue searching ...
-            parbeg = find_token_backwards(document.body, "\\begin_layout", parbeg - 1)
-        if parbeg == -1:
+        # Find containing paragraph layout
+        parent = get_containing_layout(document.body, i)
+        if parent == False:
             document.warning("Malformed lyx document: Can't find parent paragraph layout")
+            i = i + 1
             continue
-        parend = find_end_of_layout(document.body, parbeg)
-        if parend == -1:
-            document.warning("Malformed lyx document: Can't find end of parent paragraph layout")
-            continue
+        parbeg = parent[1]
+        parend = parent[2]
         allowed_opts = -1
         first_req = -1
         if len(used_caveat_modules) > 0:
             # We know for now that this must be the initials module with the Initial layout
             # If we get more such modules, we need some automating.
-            layoutname = get_value(document.body, "\\begin_layout", parbeg)
-            if layoutname == "Initial":
+            if parent[0] == "Initial":
                 # Layout has 1 opt and 1 req arg.
                 # Count the actual arguments
                 actualargs = 0
@@ -1266,18 +1261,14 @@ def revert_latexargs(document):
             # No ID: inset already reverted
             i = i + 1
             continue
-        # Find beginning and end of the containing paragraph
-        parbeg = find_token_backwards(document.body, "\\begin_layout", i)
-        while get_value(document.body, "\\begin_layout", parbeg) == "Plain Layout":
-            # Probably a preceding inset. Continue searching ...
-            parbeg = find_token_backwards(document.body, "\\begin_layout", parbeg - 1)
-        if parbeg == -1:
+        # Find containing paragraph layout
+        parent = get_containing_layout(document.body, i)
+        if parent == False:
             document.warning("Malformed lyx document: Can't find parent paragraph layout")
+            i = i + 1
             continue
-        parend = find_end_of_layout(document.body, parbeg)
-        if parend == -1:
-            document.warning("Malformed lyx document: Can't find end of parent paragraph layout")
-            continue
+        parbeg = parent[1]
+        parend = parent[2]
         # Collect all arguments in this paragraph 
         realparend = parend
         for p in range(parbeg, parend):
@@ -1687,10 +1678,13 @@ def revert_itemargs(document):
         if i == -1:
             return
         j = find_end_of_inset(document.body, i)
-        parbeg = find_token_backwards(document.body, "\\begin_layout", i)
-        while get_value(document.body, "\\begin_layout", parbeg) == "Plain Layout":
-            # Probably a preceding inset. Continue searching ...
-            parbeg = find_token_backwards(document.body, "\\begin_layout", parbeg - 1)
+        # Find containing paragraph layout
+        parent = get_containing_layout(document.body, i)
+        if parent == False:
+            document.warning("Malformed lyx document: Can't find parent paragraph layout")
+            i = i + 1
+            continue
+        parbeg = parent[1]
         beginPlain = find_token(document.body, "\\begin_layout Plain Layout", i)
         endPlain = find_end_of_layout(document.body, beginPlain)
         content = document.body[beginPlain + 1 : endPlain]
index e32ac5dc4fca7d879a933e8f9c0d7550aa800716..6d64a793ce2e3861b5a922e3930f3bd0351cc005 100644 (file)
@@ -420,12 +420,16 @@ def get_containing_inset(lines, i):
   on which the inset begins, plus the starting and ending line.
   Returns False on any kind of error or if it isn't in an inset.
   '''
-  stins = find_token_backwards(lines, i, "\\begin_inset")
-  if stins == -1:
-      return False
-  endins = find_end_of_inset(lines, stins)
-  if endins < i:
-      return False
+  j = i
+  while True:
+      stins = find_token_backwards(lines, "\\begin_inset", j)
+      if stins == -1:
+          return False
+      endins = find_end_of_inset(lines, stins)
+      if endins > j:
+          break
+      j = stins - 1
+  
   inset = get_value(lines, "\\begin_inset", stins)
   if inset == "":
       # shouldn't happen
@@ -440,14 +444,18 @@ def get_containing_layout(lines, i):
   on which the layout begins, plus the starting and ending line.
   Returns False on any kind of error.
   '''
-  stins = find_token_backwards(lines, i, "\\begin_layout")
-  if stins == -1:
-      return False
-  endins = find_end_of_layout(lines, stins)
-  if endins < i:
-      return False
-  lay = get_value(lines, "\\begin_layout", stins)
+  j = i
+  while True:
+      stlay = find_token_backwards(lines, "\\begin_layout", j)
+      if stlay == -1:
+          return False
+      endlay = find_end_of_layout(lines, stlay)
+      if endlay > i:
+          break
+      j = stlay - 1
+  
+  lay = get_value(lines, "\\begin_layout", stlay)
   if lay == "":
       # shouldn't happen
       return False
-  return (lay, stins, endins)
+  return (lay, stlay, endlay)