get_value(lines, token, start[, end[, default]):
Similar to find_token, but it returns what follows the
token on the found line. Example:
- get_value(document.header, "\use_xetex", 0)
+ get_value(document.header, "\\use_xetex", 0)
will find a line like:
- \use_xetex true
+ \\use_xetex true
and, in that case, return "true". (Note that whitespace
is stripped.) The final argument, default, defaults to "",
and is what is returned if we do not find anything. So you
can use that to set a default.
-get_quoted_value(lines, token, start[, end[, default]):
+get_quoted_value(lines, token, start[, end[, default]]):
Similar to get_value, but it will strip quotes off the
value, if they are present. So use this one for cases
where the value is normally quoted.
option="value"
and returns value. Returns "" if not found.
+get_bool_value(lines, token, start[, end[, default]]):
+ Like get_value, but returns a boolean.
+
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.
find_beginning_of(lines, i, start_token, end_token):
Here, start_token and end_token are meant to be a matching
- pair, like "\begin_layout" and "\end_layout". We look for
+ pair, like "\\begin_layout" and "\\end_layout". We look for
the start_token that pairs with the end_token that occurs
on or after line i. Returns -1 if not found.
- So, in the layout case, this would find the \begin_layout
+ So, in the layout case, this would find the \\begin_layout
for the layout line i is in.
Example:
ec = find_token(document.body, "</cell", i)
if end == 0 or end > len(lines):
end = len(lines)
m = len(token)
- for i in xrange(start, end):
+ for i in range(start, end):
if ignorews:
x = lines[i].split()
y = token.split()
if end == 0 or end > len(lines):
end = len(lines)
- for i in xrange(start, end):
+ for i in range(start, end):
for token in tokens:
if ignorews:
x = lines[i].split()
if end == 0 or end > len(lines):
end = len(lines)
- for i in xrange(start, end):
+ for i in range(start, end):
if rexp.match(lines[i]):
return i
return -1
Return -1 on failure."""
m = len(token)
- for i in xrange(start, -1, -1):
+ for i in range(start, -1, -1):
line = lines[i]
if line[:m] == token:
return i
element, in lines[end, start].
Return -1 on failure."""
- for i in xrange(start, -1, -1):
+ for i in range(start, -1, -1):
line = lines[i]
for token in tokens:
if line[:len(token)] == token:
return val.strip('"')
+def get_bool_value(lines, token, start, end = 0, default = None):
+ """ get_value(lines, token, start[[, end], default]) -> string
+
+ Find the next line that looks like:
+ token bool_value
+
+ Returns True if bool_value is 1 or true and
+ False if bool_value is 0 or false
+ """
+
+ val = get_quoted_value(lines, token, start, end, "")
+
+ if val == "1" or val == "true":
+ return True
+ if val == "0" or val == "false":
+ return False
+ return default
+
+
def get_option_value(line, option):
rx = option + '\s*=\s*"([^"]+)"'
rx = re.compile(rx)
def find_nonempty_line(lines, start, end = 0):
if end == 0:
end = len(lines)
- for i in xrange(start, end):
+ for i in range(start, end):
if is_nonempty_line(lines[i]):
return i
return -1