]> git.lyx.org Git - features.git/commitdiff
* parser_tools.py (find_tokens_exact): new, extract tokens with
authorGeorg Baum <Georg.Baum@post.rwth-aachen.de>
Fri, 17 Mar 2006 09:52:13 +0000 (09:52 +0000)
committerGeorg Baum <Georg.Baum@post.rwth-aachen.de>
Fri, 17 Mar 2006 09:52:13 +0000 (09:52 +0000)
        exact match
        * parser_tools.py (find_token2): rename to find_token_exact and make
        it work for tokens with spaces
        * lyx_1_4.py (revert_box, convert_collapsable, revert_bibtopic,
        convert_float): use find_token(s)_exact instead of find_token(s).
        This does not match "FloatList" when "Float" is searched (bug 2245)

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13410 a592a061-630c-0410-9148-cb99ea01b6c8

lib/lyx2lyx/lyx_1_3.py
lib/lyx2lyx/lyx_1_4.py
lib/lyx2lyx/parser_tools.py

index 7ced9af7fd123df542330959eeb74bb89cddb370..57d3ff17b66691a7fce263404fcf705e9a3b5661 100644 (file)
@@ -20,7 +20,7 @@
 import string
 import re
 from parser_tools import find_token, find_end_of_inset, get_value,\
-                         find_token2, del_token
+                         find_token_exact, del_token
 
 def change_insetgraphics(file):
     lines = file.body
@@ -38,16 +38,16 @@ def change_insetgraphics(file):
        if get_value(lines, "rotateOrigin", i, j) == "leftBaseline":
            j = del_token(lines, "rotateOrigin", i, j)
 
-       k = find_token2(lines, "rotate", i, j)
+       k = find_token_exact(lines, "rotate", i, j)
        if k != -1:
            del lines[k]
            j = j-1
        else:
            j = del_token(lines, "rotateAngle", i, j)
 
-       k = find_token2(lines, "size_type", i, j)
+       k = find_token_exact(lines, "size_type", i, j)
        if k == -1:
-           k = find_token2(lines, "size_kind", i, j)
+           k = find_token_exact(lines, "size_kind", i, j)
        if k != -1:
            size_type = string.split(lines[k])[1]
            del lines[k]
@@ -64,9 +64,9 @@ def change_insetgraphics(file):
            else:
                j = del_token(lines, "scale", i, j)
 
-       k = find_token2(lines, "lyxsize_type", i, j)
+       k = find_token_exact(lines, "lyxsize_type", i, j)
        if k == -1:
-           k = find_token2(lines, "lyxsize_kind", i, j)
+           k = find_token_exact(lines, "lyxsize_kind", i, j)
        if k != -1:
            lyxsize_type = string.split(lines[k])[1]
            del lines[k]
index ea6dddee264a5ad5010e4e572463bb3a1b4f3502..edc027cff5955fafc5eb71436ef7d6f5ece19fa6 100644 (file)
@@ -23,8 +23,8 @@ from os import access, F_OK
 import os.path
 from parser_tools import find_token, find_end_of_inset, get_next_paragraph, \
                          get_paragraph, get_value, del_token, is_nonempty_line,\
-                        find_tokens, find_end_of, find_token2, find_re,\
-                         get_layout
+                        find_tokens, find_end_of, find_token_exact, find_tokens_exact,\
+                         find_re, get_layout
 from sys import stdin
 from string import replace, split, find, strip, join
 
@@ -827,7 +827,7 @@ def revert_box(file):
 def convert_collapsable(file):
     i = 0
     while 1:
-        i = find_tokens(file.body, ["\\begin_inset Box",
+        i = find_tokens_exact(file.body, ["\\begin_inset Box",
                                 "\\begin_inset Branch",
                                 "\\begin_inset CharStyle",
                                 "\\begin_inset Float",
@@ -861,7 +861,7 @@ def convert_collapsable(file):
 def revert_collapsable(file):
     i = 0
     while 1:
-        i = find_tokens(file.body, ["\\begin_inset Box",
+        i = find_tokens_exact(file.body, ["\\begin_inset Box",
                                 "\\begin_inset Branch",
                                 "\\begin_inset CharStyle",
                                 "\\begin_inset Float",
@@ -1752,7 +1752,7 @@ def revert_bibtopic(file):
 def convert_float(file):
     i = 0
     while 1:
-        i = find_token(file.body, '\\begin_inset Float', i)
+        i = find_token_exact(file.body, '\\begin_inset Float', i)
         if i == -1:
             return
         # Seach for a line starting 'wide'
@@ -1773,7 +1773,7 @@ def convert_float(file):
 def revert_float(file):
     i = 0
     while 1:
-        i = find_token(file.body, '\\begin_inset Float', i)
+        i = find_token_exact(file.body, '\\begin_inset Float', i)
         if i == -1:
             return
         j = find_end_of_inset(file.body, i)
@@ -1799,7 +1799,7 @@ def convert_graphics(file):
         if i == -1:
             return
 
-       j = find_token2(file.body, "filename", i)
+       j = find_token_exact(file.body, "filename", i)
         if j == -1:
             return
         i = i + 1
index c3d9899e88b7d995109d9062de51fa2feb3920da..d857e2287c5e6498b43b79a9ebf5e8dffee87787 100644 (file)
@@ -37,27 +37,43 @@ def find_token(lines, token, start, end = 0):
     return -1
 
 
-def find_token2(lines, token, start, end = 0):
+def find_token_exact(lines, token, start, end = 0):
     if end == 0:
        end = len(lines)
     for i in xrange(start, end):
-       x = string.split(lines[i])
-       if len(x) > 0 and x[0] == token:
-           return i
+        x = string.split(lines[i])
+        y = string.split(token)
+        if len(x) < len(y):
+            continue
+        if x[:len(y)] == y:
+            return i
     return -1
 
 
 def find_tokens(lines, tokens, start, end = 0):
     if end == 0:
        end = len(lines)
-    for i in xrange(start, end):
-       line = lines[i]
+    for i in range(start, end):
        for token in tokens:
-           if line[:len(token)] == token:
+           if lines[i][:len(token)] == token:
                return i
     return -1
 
 
+def find_tokens_exact(lines, tokens, start, end = 0):
+    if end == 0:
+       end = len(lines)
+    for i in range(start, end):
+        for token in tokens:
+            x = string.split(lines[i])
+            y = string.split(token)
+            if len(x) < len(y):
+                continue
+            if x[:len(y)] == y:
+                return i
+    return -1
+
+
 def find_re(lines, rexp, start, end = 0):
     if end == 0:
        end = len(lines)
@@ -86,7 +102,7 @@ def find_tokens_backwards(lines, tokens, start):
 
 
 def get_value(lines, token, start, end = 0):
-    i = find_token2(lines, token, start, end)
+    i = find_token_exact(lines, token, start, end)
     if i == -1:
        return ""
     if len(string.split(lines[i])) > 1:
@@ -103,7 +119,7 @@ def get_layout(line, default_layout):
 
 
 def del_token(lines, token, i, j):
-    k = find_token2(lines, token, i, j)
+    k = find_token_exact(lines, token, i, j)
     if k == -1:
        return j
     else: