]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/parser_tools.py
half-functional lyx2lyx reversion
[lyx.git] / lib / lyx2lyx / parser_tools.py
index c8fa4e1a17cc0e8b3521624e2eea6f8e29d29cd3..e32ac5dc4fca7d879a933e8f9c0d7550aa800716 100644 (file)
@@ -1,6 +1,6 @@
 # This file is part of lyx2lyx
 # -*- coding: utf-8 -*-
 # This file is part of lyx2lyx
 # -*- coding: utf-8 -*-
-# Copyright (C) 2002-2010 Dekel Tsur <dekel@lyx.org>, 
+# Copyright (C) 2002-2011 Dekel Tsur <dekel@lyx.org>, 
 # José Matos <jamatos@lyx.org>, Richard Heck <rgheck@comcast.net>
 #
 # This program is free software; you can redistribute it and/or
 # José Matos <jamatos@lyx.org>, Richard Heck <rgheck@comcast.net>
 #
 # This program is free software; you can redistribute it and/or
@@ -15,7 +15,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
 
 ''' 
 
 
 ''' 
@@ -26,20 +26,24 @@ they do. Optional arguments are marked by brackets.
 find_token(lines, token, start[, end[, ignorews]]):
   Returns the first line i, start <= i < end, on which
   token is found at the beginning. Returns -1 if not 
 find_token(lines, token, start[, end[, ignorews]]):
   Returns the first line i, start <= i < end, on which
   token is found at the beginning. Returns -1 if not 
-  found. If ignorews is (given and) True, then differences
-  in whitespace do not count.
+  found. 
+  If ignorews is (given and) True, then differences
+  in whitespace do not count, except that there must be no 
+  extra whitespace following token itself.
 
 find_token_exact(lines, token, start[, end]):
 
 find_token_exact(lines, token, start[, end]):
-  Badly named. As find_token, but with ignorews True.
+  As find_token, but with ignorews True.
 
 find_tokens(lines, tokens, start[, end[, ignorews]]):
   Returns the first line i, start <= i < end, on which
   oen of the tokens in tokens is found at the beginning. 
 
 find_tokens(lines, tokens, start[, end[, ignorews]]):
   Returns the first line i, start <= i < end, on which
   oen of the tokens in tokens is found at the beginning. 
-  Returns -1 if not found. If ignorews is (given and) True, 
-  then differences in whitespace do not count.
+  Returns -1 if not found. 
+  If ignorews is (given and) True, then differences
+  in whitespace do not count, except that there must be no 
+  extra whitespace following token itself.
 
 find_tokens_exact(lines, token, start[, end]):
 
 find_tokens_exact(lines, token, start[, end]):
-  Badly named. As find_tokens, but with ignorews True.
+  As find_tokens, but with ignorews True.
   
 find_token_backwards(lines, token, start):
 find_tokens_backwards(lines, tokens, start):
   
 find_token_backwards(lines, token, start):
 find_tokens_backwards(lines, tokens, start):
@@ -65,6 +69,11 @@ get_quoted_value(lines, token, start[, end[, default]):
   value, if they are present. So use this one for cases
   where the value is normally quoted.
 
   value, if they are present. So use this one for cases
   where the value is normally quoted.
 
+get_option_value(line, option):
+  This assumes we have a line with something like:
+      option="value"
+  and returns value. Returns "" if not found.
+
 del_token(lines, token, start[, end]):
   Like find_token, but deletes the line if it finds one.
   Returns True if a line got deleted, otherwise False.
 del_token(lines, token, start[, end]):
   Like find_token, but deletes the line if it finds one.
   Returns True if a line got deleted, otherwise False.
@@ -133,6 +142,8 @@ is_nonempty_line(line):
 
 '''
 
 
 '''
 
+import re
+
 # Utilities for one line
 def check_token(line, token):
     """ check_token(line, token) -> bool
 # Utilities for one line
 def check_token(line, token):
     """ check_token(line, token) -> bool
@@ -159,7 +170,8 @@ def find_token(lines, token, start, end = 0, ignorews = False):
     element, in lines[start, end].
     
     If ignorews is True (default is False), then differences in
     element, in lines[start, end].
     
     If ignorews is True (default is False), then differences in
-    whitespace are ignored.
+    whitespace are ignored, except that there must be no extra
+    whitespace following token itself.
 
     Return -1 on failure."""
 
 
     Return -1 on failure."""
 
@@ -294,6 +306,24 @@ def get_quoted_value(lines, token, start, end = 0, default = ""):
     return val.strip('"')
 
 
     return val.strip('"')
 
 
+def get_option_value(line, option):
+    rx = option + '\s*=\s*"([^"]+)"'
+    rx = re.compile(rx)
+    m = rx.search(line)
+    if not m:
+      return ""
+    return m.group(1)
+
+
+def set_option_value(line, option, value):
+    rx = '(' + option + '\s*=\s*")[^"]+"'
+    rx = re.compile(rx)
+    m = rx.search(line)
+    if not m:
+        return line
+    return re.sub(rx, '\g<1>' + value + '"', line)
+
+
 def del_token(lines, token, start, end = 0):
     """ del_token(lines, token, start, end) -> int
 
 def del_token(lines, token, start, end = 0):
     """ del_token(lines, token, start, end) -> int