# 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
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]):
- 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
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 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