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
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:
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
def get_containing_inset(lines, i):
'''
Finds out what kind of inset line i is within. Returns a
- list containing (i) what follows \begin_inset on the line
+ list containing (i) what follows \begin_inset on the line
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.
'''
if endins > j:
break
j = stins - 1
-
+
+ if endins < i:
+ return False
+
inset = get_value(lines, "\\begin_inset", stins)
if inset == "":
# shouldn't happen
def get_containing_layout(lines, i):
'''
Finds out what kind of layout line i is within. Returns a
- list containing (i) what follows \begin_layout on the line
+ list containing what follows \begin_layout on the line
on which the layout begins, plus the starting and ending line
- and the start of the apargraph (after all params).
+ and the start of the paragraph (after all params). I.e, returns:
+ (layoutname, layoutstart, layoutend, startofcontent)
Returns False on any kind of error.
'''
j = i
if endlay > i:
break
j = stlay - 1
-
+
+ if endlay < i:
+ return False
+
lay = get_value(lines, "\\begin_layout", stlay)
if lay == "":
# shouldn't happen
return False
par_params = ["\\noindent", "\\indent", "\\indent-toggle", "\\leftindent",
- "\\start_of_appendix", "\\paragraph_spacing single",
- "\\paragraph_spacing onehalf", "\\paragraph_spacing double",
- "\\paragraph_spacing other", "\\align", "\\labelwidthstring"]
+ "\\start_of_appendix", "\\paragraph_spacing", "\\align",
+ "\\labelwidthstring"]
stpar = stlay
while True:
stpar += 1
- if lines[stpar] not in par_params:
+ if lines[stpar].split(' ', 1)[0] not in par_params:
break
return (lay, stlay, endlay, stpar)
def count_pars_in_inset(lines, i):
- '''
+ '''
Counts the paragraphs within this inset
'''
ins = get_containing_inset(lines, i)
m = re.match(r'\\begin_layout (.*)', lines[j])
if m and get_containing_inset(lines, j)[0] == ins[0]:
pars += 1
-
+
return pars
def find_end_of_sequence(lines, i):
- '''
+ '''
Returns the end of a sequence of identical layouts.
'''
lay = get_containing_layout(lines, i)