Fix unused get_containing_inset and get_containing layout parser methods and use the latter

This commit is contained in:
Juergen Spitzmueller 2012-12-03 08:42:26 +01:00
parent 0c05189de1
commit f8df33c2fd
2 changed files with 45 additions and 43 deletions

View File

@ -25,9 +25,9 @@ import sys, os
# Uncomment only what you need to import, please.
from parser_tools import del_token, find_token, find_token_backwards, find_end_of, find_end_of_inset, \
find_end_of_layout, find_re, get_option_value, get_value, get_quoted_value, \
set_option_value
from parser_tools import del_token, find_token, find_token_backwards, find_end_of, \
find_end_of_inset, find_end_of_layout, find_re, get_option_value, get_containing_layout, \
get_value, get_quoted_value, set_option_value
#from parser_tools import find_token, find_end_of, find_tokens, \
#find_token_exact, find_end_of_inset, find_end_of_layout, \
@ -1208,25 +1208,20 @@ def convert_latexargs(document):
i = i + 1
continue
# Find beginning and end of the containing paragraph
parbeg = find_token_backwards(document.body, "\\begin_layout", i)
while get_value(document.body, "\\begin_layout", parbeg) == "Plain Layout":
# Probably a preceding inset. Continue searching ...
parbeg = find_token_backwards(document.body, "\\begin_layout", parbeg - 1)
if parbeg == -1:
# Find containing paragraph layout
parent = get_containing_layout(document.body, i)
if parent == False:
document.warning("Malformed lyx document: Can't find parent paragraph layout")
i = i + 1
continue
parend = find_end_of_layout(document.body, parbeg)
if parend == -1:
document.warning("Malformed lyx document: Can't find end of parent paragraph layout")
continue
parbeg = parent[1]
parend = parent[2]
allowed_opts = -1
first_req = -1
if len(used_caveat_modules) > 0:
# We know for now that this must be the initials module with the Initial layout
# If we get more such modules, we need some automating.
layoutname = get_value(document.body, "\\begin_layout", parbeg)
if layoutname == "Initial":
if parent[0] == "Initial":
# Layout has 1 opt and 1 req arg.
# Count the actual arguments
actualargs = 0
@ -1266,18 +1261,14 @@ def revert_latexargs(document):
# No ID: inset already reverted
i = i + 1
continue
# Find beginning and end of the containing paragraph
parbeg = find_token_backwards(document.body, "\\begin_layout", i)
while get_value(document.body, "\\begin_layout", parbeg) == "Plain Layout":
# Probably a preceding inset. Continue searching ...
parbeg = find_token_backwards(document.body, "\\begin_layout", parbeg - 1)
if parbeg == -1:
# Find containing paragraph layout
parent = get_containing_layout(document.body, i)
if parent == False:
document.warning("Malformed lyx document: Can't find parent paragraph layout")
i = i + 1
continue
parend = find_end_of_layout(document.body, parbeg)
if parend == -1:
document.warning("Malformed lyx document: Can't find end of parent paragraph layout")
continue
parbeg = parent[1]
parend = parent[2]
# Collect all arguments in this paragraph
realparend = parend
for p in range(parbeg, parend):
@ -1687,10 +1678,13 @@ def revert_itemargs(document):
if i == -1:
return
j = find_end_of_inset(document.body, i)
parbeg = find_token_backwards(document.body, "\\begin_layout", i)
while get_value(document.body, "\\begin_layout", parbeg) == "Plain Layout":
# Probably a preceding inset. Continue searching ...
parbeg = find_token_backwards(document.body, "\\begin_layout", parbeg - 1)
# Find containing paragraph layout
parent = get_containing_layout(document.body, i)
if parent == False:
document.warning("Malformed lyx document: Can't find parent paragraph layout")
i = i + 1
continue
parbeg = parent[1]
beginPlain = find_token(document.body, "\\begin_layout Plain Layout", i)
endPlain = find_end_of_layout(document.body, beginPlain)
content = document.body[beginPlain + 1 : endPlain]

View File

@ -420,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.
'''
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
@ -440,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.
'''
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
return (lay, stins, endins)
return (lay, stlay, endlay)