]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/parser_tools.py
Fix up revert_longtable_align routine. Also, fix a couple thinkos in an
[lyx.git] / lib / lyx2lyx / parser_tools.py
index c0c891f5346d6847a90cd044b4691128859837eb..9b63e00fd1f30b1424edee359e61e4fa87563bd9 100644 (file)
@@ -84,7 +84,7 @@ def find_tokens(lines, tokens, start, end = 0, exact = False):
                 if len(x) < len(y):
                     continue
                 if x[:len(y)] == y:
-                    return i            
+                    return i
             else:
                 if lines[i][:len(token)] == token:
                     return i
@@ -141,19 +141,40 @@ def find_tokens_backwards(lines, tokens, start):
     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."""
 
     i = find_token_exact(lines, token, start, end)
     if i == -1:
-        return ""
+        return default
     if len(lines[i].split()) > 1:
         return lines[i].split()[1]
     else:
-        return ""
+        return default
+
+
+def get_value_string(lines, token, start, end = 0, trim = False, default = ""):
+    """ get_value_string(lines, token, start[[, end], trim, default]) -> string
+
+    Return tokens after token as string, in lines, where
+    token is the first element. When trim is used, the first and last character
+    of the string is trimmed."""
+
+    i = find_token_exact(lines, token, start, end)
+    if i == -1:
+        return default
+    if len(lines[i].split()) > 1:
+        for k in range (0, len(lines[i])):
+            if lines[i][k] == ' ':
+                if trim ==False:
+                    return lines[i][k+1:len(lines[i])]
+                else:
+                    return lines[i][k+2:len(lines[i])-1]
+    else:
+        return default
 
 
 def del_token(lines, token, start, end):
@@ -176,6 +197,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)
+        if i == -1:
+            return -1
         if check_token(lines[i], end_token):
             count = count+1
         else:
@@ -190,6 +213,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)
+        if i == -1:
+            return -1
         if check_token(lines[i], start_token):
             count = count+1
         else: