Ensure toc items are not duplicated in the toc anchor map

This commit is contained in:
Kovid Goyal 2016-12-30 15:23:43 +05:30
parent f5337dcad0
commit d2ccda55cc

View File

@ -154,11 +154,13 @@ def get_length(root):
def toc_anchor_map(toc): def toc_anchor_map(toc):
ans = defaultdict(list) ans = defaultdict(list)
seen_map = defaultdict(set)
def process_node(node): def process_node(node):
name = node['dest'] name = node['dest']
if name: if name and node['id'] not in seen_map[name]:
ans[name].append({'id':node['id'], 'frag':node['frag']}) ans[name].append({'id':node['id'], 'frag':node['frag']})
seen_map[name].add(node['id'])
tuple(map(process_node, node['children'])) tuple(map(process_node, node['children']))
process_node(toc) process_node(toc)