]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/parser_tools.py
Also add support for URW Garamond math fonts (via newtx)
[lyx.git] / lib / lyx2lyx / parser_tools.py
index cfc6a75433fe5ccd5ffda0dfdd668ade7ace7e78..6d64a793ce2e3861b5a922e3930f3bd0351cc005 100644 (file)
@@ -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
 
 
 ''' 
 
 
 ''' 
@@ -307,7 +307,7 @@ def get_quoted_value(lines, token, start, end = 0, default = ""):
 
 
 def get_option_value(line, option):
 
 
 def get_option_value(line, option):
-    rx = option + '\s*=\s*"([^"+])"'
+    rx = option + '\s*=\s*"([^"]+)"'
     rx = re.compile(rx)
     m = rx.search(line)
     if not m:
     rx = re.compile(rx)
     m = rx.search(line)
     if not m:
@@ -315,6 +315,15 @@ def get_option_value(line, option):
     return m.group(1)
 
 
     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
 
@@ -411,12 +420,16 @@ def get_containing_inset(lines, i):
   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.
   '''
   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.
   '''
-  stins = find_token_backwards(lines, i, "\\begin_inset")
-  if stins == -1:
-      return False
-  endins = find_end_of_inset(lines, stins)
-  if endins < i:
-      return False
+  j = i
+  while True:
+      stins = find_token_backwards(lines, "\\begin_inset", j)
+      if stins == -1:
+          return False
+      endins = find_end_of_inset(lines, stins)
+      if endins > j:
+          break
+      j = stins - 1
+  
   inset = get_value(lines, "\\begin_inset", stins)
   if inset == "":
       # shouldn't happen
   inset = get_value(lines, "\\begin_inset", stins)
   if inset == "":
       # shouldn't happen
@@ -431,14 +444,18 @@ def get_containing_layout(lines, i):
   on which the layout begins, plus the starting and ending line.
   Returns False on any kind of error.
   '''
   on which the layout begins, plus the starting and ending line.
   Returns False on any kind of error.
   '''
-  stins = find_token_backwards(lines, i, "\\begin_layout")
-  if stins == -1:
-      return False
-  endins = find_end_of_layout(lines, stins)
-  if endins < i:
-      return False
-  lay = get_value(lines, "\\begin_layout", stins)
+  j = i
+  while True:
+      stlay = find_token_backwards(lines, "\\begin_layout", j)
+      if stlay == -1:
+          return False
+      endlay = find_end_of_layout(lines, stlay)
+      if endlay > i:
+          break
+      j = stlay - 1
+  
+  lay = get_value(lines, "\\begin_layout", stlay)
   if lay == "":
       # shouldn't happen
       return False
   if lay == "":
       # shouldn't happen
       return False
-  return (lay, stins, endins)
+  return (lay, stlay, endlay)