Avoid recomputing findReferencedElements in removeUnusedDefs
The removeUnusedDefs function does not actually remove anything (that is left for its callers to do). This implies that findReferencedElements will return the same value before, during and after a call to removeUnusedDefs. Therefore, we can reuse the value from findReferencedElements when recursing into child nodes. Signed-off-by: Niels Thykier <niels@thykier.net>
This commit is contained in:
parent
8543368a6e
commit
35fa0843a9
1 changed files with 6 additions and 3 deletions
|
|
@ -641,10 +641,13 @@ def findReferencingProperty(node, prop, val, ids):
|
||||||
ids[id] = [1, [node]]
|
ids[id] = [1, [node]]
|
||||||
|
|
||||||
|
|
||||||
def removeUnusedDefs(doc, defElem, elemsToRemove=None):
|
def removeUnusedDefs(doc, defElem, elemsToRemove=None, referencedIDs=None):
|
||||||
if elemsToRemove is None:
|
if elemsToRemove is None:
|
||||||
elemsToRemove = []
|
elemsToRemove = []
|
||||||
|
|
||||||
|
# removeUnusedDefs do not change the XML itself; therefore there is no point in
|
||||||
|
# recomputing findReferencedElements when we recurse into child nodes.
|
||||||
|
if referencedIDs is None:
|
||||||
referencedIDs = findReferencedElements(doc.documentElement)
|
referencedIDs = findReferencedElements(doc.documentElement)
|
||||||
|
|
||||||
keepTags = ['font', 'style', 'metadata', 'script', 'title', 'desc']
|
keepTags = ['font', 'style', 'metadata', 'script', 'title', 'desc']
|
||||||
|
|
@ -655,7 +658,7 @@ def removeUnusedDefs(doc, defElem, elemsToRemove=None):
|
||||||
# we only inspect the children of a group in a defs if the group
|
# we only inspect the children of a group in a defs if the group
|
||||||
# is not referenced anywhere else
|
# is not referenced anywhere else
|
||||||
if elem.nodeName == 'g' and elem.namespaceURI == NS['SVG']:
|
if elem.nodeName == 'g' and elem.namespaceURI == NS['SVG']:
|
||||||
elemsToRemove = removeUnusedDefs(doc, elem, elemsToRemove)
|
elemsToRemove = removeUnusedDefs(doc, elem, elemsToRemove, referencedIDs=referencedIDs)
|
||||||
# we only remove if it is not one of our tags we always keep (see above)
|
# we only remove if it is not one of our tags we always keep (see above)
|
||||||
elif elem.nodeName not in keepTags:
|
elif elem.nodeName not in keepTags:
|
||||||
elemsToRemove.append(elem)
|
elemsToRemove.append(elem)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue