]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/parser_tools.py
Avoid endless loops, e.g when an end_deeper is missing
[lyx.git] / lib / lyx2lyx / parser_tools.py
index c0c891f5346d6847a90cd044b4691128859837eb..78459d21d9ce4afc59b7f5bee5ac35d700fc1a73 100644 (file)
@@ -141,8 +141,8 @@ def find_tokens_backwards(lines, tokens, start):
     return -1
 
 
     return -1
 
 
-def get_value(lines, token, start, end = 0):
-    """ get_value(lines, token, start[, end]) -> list of strings
+def get_value(lines, token, start, end = 0, default = ""):
+    """ get_value(lines, token, start[[, end], default]) -> list of strings
 
     Return tokens after token for the first line, in lines, where
     token is the first element."""
 
     Return tokens after token for the first line, in lines, where
     token is the first element."""
@@ -153,7 +153,7 @@ def get_value(lines, token, start, end = 0):
     if len(lines[i].split()) > 1:
         return lines[i].split()[1]
     else:
     if len(lines[i].split()) > 1:
         return lines[i].split()[1]
     else:
-        return ""
+        return default
 
 
 def del_token(lines, token, start, end):
 
 
 def del_token(lines, token, start, end):
@@ -176,6 +176,8 @@ def find_beginning_of(lines, i, start_token, end_token):
     count = 1
     while i > 0:
         i = find_tokens_backwards(lines, [start_token, end_token], i-1)
     count = 1
     while i > 0:
         i = find_tokens_backwards(lines, [start_token, end_token], i-1)
+        if i == -1:
+            return -1
         if check_token(lines[i], end_token):
             count = count+1
         else:
         if check_token(lines[i], end_token):
             count = count+1
         else:
@@ -190,6 +192,8 @@ def find_end_of(lines, i, start_token, end_token):
     n = len(lines)
     while i < n:
         i = find_tokens(lines, [end_token, start_token], i+1)
     n = len(lines)
     while i < n:
         i = find_tokens(lines, [end_token, start_token], i+1)
+        if i == -1:
+            return -1
         if check_token(lines[i], start_token):
             count = count+1
         else:
         if check_token(lines[i], start_token):
             count = count+1
         else: