# 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
More documentaton is below, but here is a quick guide to what
they do. Optional arguments are marked by brackets.
-find_token(lines, token, start[, end[, exact]]):
+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 exact 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]):
- 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.
- 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]):
- 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):
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.
'''
+import re
+
# Utilities for one line
def check_token(line, token):
""" check_token(line, token) -> bool
# Utilities for a list of lines
-def find_token(lines, token, start, end = 0, exact = False):
- """ find_token(lines, token, start[[, end], exact]) -> int
+def find_token(lines, token, start, end = 0, ignorews = False):
+ """ find_token(lines, token, start[[, end], ignorews]) -> int
Return the lowest line where token is found, and is the first
element, in lines[start, end].
- If exact is True (default is False), then differences in
- whitespace are ignored.
+ If ignorews is True (default is False), then differences in
+ whitespace are ignored, except that there must be no extra
+ whitespace following token itself.
Return -1 on failure."""
end = len(lines)
m = len(token)
for i in xrange(start, end):
- if exact:
+ if ignorews:
x = lines[i].split()
y = token.split()
if len(x) < len(y):
return find_token(lines, token, start, end, True)
-def find_tokens(lines, tokens, start, end = 0, exact = False):
- """ find_tokens(lines, tokens, start[[, end], exact]) -> int
+def find_tokens(lines, tokens, start, end = 0, ignorews = False):
+ """ find_tokens(lines, tokens, start[[, end], ignorews]) -> int
Return the lowest line where one token in tokens is found, and is
the first element, in lines[start, end].
for i in xrange(start, end):
for token in tokens:
- if exact:
+ if ignorews:
x = lines[i].split()
y = token.split()
if len(x) < len(y):
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 del_token(lines, token, start, end = 0):
""" del_token(lines, token, start, end) -> int