The branch, master, has been updated.

- Log -----------------------------------------------------------------

commit f8df33c2fd14ef12fc64a4e38ef1b360ce5695d5
Author: Juergen Spitzmueller <sp...@lyx.org>
Date:   Mon Dec 3 08:42:26 2012 +0100

    Fix unused get_containing_inset and get_containing layout parser methods 
and use the latter

diff --git a/lib/lyx2lyx/lyx_2_1.py b/lib/lyx2lyx/lyx_2_1.py
index f6ac766..e7b7c6e 100644
--- a/lib/lyx2lyx/lyx_2_1.py
+++ b/lib/lyx2lyx/lyx_2_1.py
@@ -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]
diff --git a/lib/lyx2lyx/parser_tools.py b/lib/lyx2lyx/parser_tools.py
index e32ac5d..6d64a79 100644
--- a/lib/lyx2lyx/parser_tools.py
+++ b/lib/lyx2lyx/parser_tools.py
@@ -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)

-----------------------------------------------------------------------

Summary of changes:
 lib/lyx2lyx/lyx_2_1.py      |   52 +++++++++++++++++++------------------------
 lib/lyx2lyx/parser_tools.py |   36 ++++++++++++++++++-----------
 2 files changed, 45 insertions(+), 43 deletions(-)


hooks/post-receive
-- 
The LyX Source Repository

Reply via email to