]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/parser_tools.py
Pass parameters by reference (performance)
[lyx.git] / lib / lyx2lyx / parser_tools.py
index c989515e4120156e7f8068e7866f3dd2845a20d8..4e30f63bf8094b65bbbb1557d62594cc1d5af317 100644 (file)
@@ -425,7 +425,7 @@ def is_in_inset(lines, i, inset):
 def get_containing_inset(lines, i):
   ''' 
   Finds out what kind of inset line i is within. Returns a 
-  list containing (i) what follows \begin_inset on the line 
+  list containing (i) what follows \begin_inset on the line
   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.
   '''
@@ -438,7 +438,10 @@ def get_containing_inset(lines, i):
       if endins > j:
           break
       j = stins - 1
-  
+
+  if endins < i:
+      return False
+
   inset = get_value(lines, "\\begin_inset", stins)
   if inset == "":
       # shouldn't happen
@@ -449,7 +452,7 @@ def get_containing_inset(lines, i):
 def get_containing_layout(lines, i):
   ''' 
   Finds out what kind of layout line i is within. Returns a 
-  list containing what follows \begin_layout on the line 
+  list containing what follows \begin_layout on the line
   on which the layout begins, plus the starting and ending line
   and the start of the paragraph (after all params). I.e, returns:
     (layoutname, layoutstart, layoutend, startofcontent)
@@ -464,25 +467,27 @@ def get_containing_layout(lines, i):
       if endlay > i:
           break
       j = stlay - 1
-  
+
+  if endlay < i:
+      return False
+
   lay = get_value(lines, "\\begin_layout", stlay)
   if lay == "":
       # shouldn't happen
       return False
   par_params = ["\\noindent", "\\indent", "\\indent-toggle", "\\leftindent",
-                "\\start_of_appendix", "\\paragraph_spacing single",
-                "\\paragraph_spacing onehalf", "\\paragraph_spacing double",
-                "\\paragraph_spacing other", "\\align", "\\labelwidthstring"]
+                "\\start_of_appendix", "\\paragraph_spacing", "\\align",
+                "\\labelwidthstring"]
   stpar = stlay
   while True:
       stpar += 1
-      if lines[stpar] not in par_params:
+      if lines[stpar].split(' ', 1)[0] not in par_params:
           break
   return (lay, stlay, endlay, stpar)
 
 
 def count_pars_in_inset(lines, i):
-  ''' 
+  '''
   Counts the paragraphs within this inset
   '''
   ins = get_containing_inset(lines, i)
@@ -493,12 +498,12 @@ def count_pars_in_inset(lines, i):
       m = re.match(r'\\begin_layout (.*)', lines[j])
       if m and get_containing_inset(lines, j)[0] == ins[0]:
           pars += 1
-  
+
   return pars
 
 
 def find_end_of_sequence(lines, i):
-  ''' 
+  '''
   Returns the end of a sequence of identical layouts.
   '''
   lay = get_containing_layout(lines, i)