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
633b381d87
commit
b916a189e9
1 changed files with 6 additions and 3 deletions
|
|
@ -641,11 +641,14 @@ def findReferencingProperty(node, prop, val, ids):
|
|||
ids[id] = [1, [node]]
|
||||
|
||||
|
||||
def removeUnusedDefs(doc, defElem, elemsToRemove=None):
|
||||
def removeUnusedDefs(doc, defElem, elemsToRemove=None, referencedIDs=None):
|
||||
if elemsToRemove is None:
|
||||
elemsToRemove = []
|
||||
|
||||
referencedIDs = findReferencedElements(doc.documentElement)
|
||||
# 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)
|
||||
|
||||
keepTags = ['font', 'style', 'metadata', 'script', 'title', 'desc']
|
||||
for elem in defElem.childNodes:
|
||||
|
|
@ -655,7 +658,7 @@ def removeUnusedDefs(doc, defElem, elemsToRemove=None):
|
|||
# we only inspect the children of a group in a defs if the group
|
||||
# is not referenced anywhere else
|
||||
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)
|
||||
elif elem.nodeName not in keepTags:
|
||||
elemsToRemove.append(elem)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue