KF8 Input: Ingore invalid flow references in the KF8 document instead of erroring out on them. See #1085306

This commit is contained in:
Kovid Goyal 2012-12-01 15:20:27 +05:30
parent a7f66a4338
commit bf46edf785

View File

@ -203,7 +203,7 @@ def update_flow_links(mobi8_reader, resource_map, log):
# All flows are now unicode and have links resolved # All flows are now unicode and have links resolved
return flows return flows
def insert_flows_into_markup(parts, flows, mobi8_reader): def insert_flows_into_markup(parts, flows, mobi8_reader, log):
mr = mobi8_reader mr = mobi8_reader
# kindle:flow:XXXX?mime=YYYY/ZZZ (used for style sheets, svg images, etc) # kindle:flow:XXXX?mime=YYYY/ZZZ (used for style sheets, svg images, etc)
@ -219,7 +219,12 @@ def insert_flows_into_markup(parts, flows, mobi8_reader):
if tag.startswith('<'): if tag.startswith('<'):
for m in flow_pattern.finditer(tag): for m in flow_pattern.finditer(tag):
num = int(m.group(1), 32) num = int(m.group(1), 32)
try:
fi = mr.flowinfo[num] fi = mr.flowinfo[num]
except IndexError:
log.warn('Ignoring invalid flow reference: %s'%m.group())
tag = ''
else:
if fi.format == 'inline': if fi.format == 'inline':
tag = flows[num] tag = flows[num]
else: else:
@ -313,7 +318,7 @@ def expand_mobi8_markup(mobi8_reader, resource_map, log):
flows = update_flow_links(mobi8_reader, resource_map, log) flows = update_flow_links(mobi8_reader, resource_map, log)
# Insert inline flows into the markup # Insert inline flows into the markup
insert_flows_into_markup(parts, flows, mobi8_reader) insert_flows_into_markup(parts, flows, mobi8_reader, log)
# Insert raster images into markup # Insert raster images into markup
insert_images_into_markup(parts, resource_map, log) insert_images_into_markup(parts, resource_map, log)