Merge pull request #2 from flosse/keep-unreferenced-defs
added option to keep elements within defs
This commit is contained in:
commit
e01fac82a4
1 changed files with 14 additions and 10 deletions
|
|
@ -587,7 +587,7 @@ def removeUnusedDefs(doc, defElem, elemsToRemove=None):
|
||||||
elemsToRemove.append(elem)
|
elemsToRemove.append(elem)
|
||||||
return elemsToRemove
|
return elemsToRemove
|
||||||
|
|
||||||
def removeUnreferencedElements(doc):
|
def removeUnreferencedElements(doc, keepDefs):
|
||||||
"""
|
"""
|
||||||
Removes all unreferenced elements except for <svg>, <font>, <metadata>, <title>, and <desc>.
|
Removes all unreferenced elements except for <svg>, <font>, <metadata>, <title>, and <desc>.
|
||||||
Also vacuums the defs of any non-referenced renderable elements.
|
Also vacuums the defs of any non-referenced renderable elements.
|
||||||
|
|
@ -610,6 +610,7 @@ def removeUnreferencedElements(doc):
|
||||||
num += 1
|
num += 1
|
||||||
numElemsRemoved += 1
|
numElemsRemoved += 1
|
||||||
|
|
||||||
|
if not keepDefs:
|
||||||
# Remove most unreferenced elements inside defs
|
# Remove most unreferenced elements inside defs
|
||||||
defs = doc.documentElement.getElementsByTagName('defs')
|
defs = doc.documentElement.getElementsByTagName('defs')
|
||||||
for aDef in defs:
|
for aDef in defs:
|
||||||
|
|
@ -2923,7 +2924,7 @@ def scourString(in_string, options=None):
|
||||||
|
|
||||||
# remove unreferenced gradients/patterns outside of defs
|
# remove unreferenced gradients/patterns outside of defs
|
||||||
# and most unreferenced elements inside of defs
|
# and most unreferenced elements inside of defs
|
||||||
while removeUnreferencedElements(doc) > 0:
|
while removeUnreferencedElements(doc, options.keep_defs) > 0:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# remove empty defs, metadata, g
|
# remove empty defs, metadata, g
|
||||||
|
|
@ -3119,6 +3120,9 @@ _options_parser.add_option("--shorten-ids-prefix",
|
||||||
_options_parser.add_option("--disable-embed-rasters",
|
_options_parser.add_option("--disable-embed-rasters",
|
||||||
action="store_false", dest="embed_rasters", default=True,
|
action="store_false", dest="embed_rasters", default=True,
|
||||||
help="won't embed rasters as base64-encoded data")
|
help="won't embed rasters as base64-encoded data")
|
||||||
|
_options_parser.add_option("--keep-unreferenced-defs",
|
||||||
|
action="store_true", dest="keep_defs", default=False,
|
||||||
|
help="won't remove elements within the defs container that are unreferenced")
|
||||||
_options_parser.add_option("--keep-editor-data",
|
_options_parser.add_option("--keep-editor-data",
|
||||||
action="store_true", dest="keep_editor_data", default=False,
|
action="store_true", dest="keep_editor_data", default=False,
|
||||||
help="won't remove Inkscape, Sodipodi or Adobe Illustrator elements and attributes")
|
help="won't remove Inkscape, Sodipodi or Adobe Illustrator elements and attributes")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue