Commit graph

198 commits

Author SHA1 Message Date
Eduard Braun
4f23ea7a34 Print usage information if no input file was specified (and no data is available from stdin) (#65)
fixes #34
2016-08-23 21:16:14 +02:00
Eduard Braun
57f93efc89 Don't escape quotes ('/") in text nodes and attributes. (#64)
- In text nodes quotes are fine
- In attributes quotes are fine if used reciprocally.

Escaping in the latter case often causes issues, e.g. with quoted font names (#21) or inline CSS styles (#56), while it probably does not gain anything (if quotes are wrongly used in attribute names the XML is most likely invalid to start with)
2016-08-16 00:10:41 +02:00
Eduard Braun
fe2884c3e8 Don't remove unreferenced defs if --keep-unreferenced-defs is specified (#62)
* Don't remove unreferenced defs if `--keep-unreferenced-defs` is specified
(fixes #18)

* Add unittests for previous commit
2016-08-14 18:52:55 +02:00
Eduard Braun
3299f8f6e0 Also shorten unused IDs when --shorten-ids is specified 2016-08-14 17:12:48 +02:00
Eduard Braun
df142a2f22 Drop official support for Python 2.6 2016-08-13 17:15:03 +02:00
Dirk Thomas
371f14786a add --order-attributes option 2016-07-29 10:22:59 -07:00
Eduard Braun
84b36c7109 Only include "standalone" attribute if it was explicitly set to "yes" in input document ("no" is the default value) 2016-06-12 15:36:02 +02:00
Tobias Oberstein
6a23a4cd71 add unit tests 2016-04-02 17:41:20 +02:00
Tobias Oberstein
99dc0dfae9 fix opt groups 2016-04-02 17:11:14 +02:00
Tobias Oberstein
b14e801cb7 add option to check and warn or bail out on flowtext 2016-04-02 16:49:10 +02:00
Eduard Braun
ea610e5c09 Fix regression in 77906518c0
(accidentally removed default value for  "shorten_ids_prefix")
2016-04-02 01:54:27 +02:00
Eduard Braun
77906518c0 Use option groups for command line arguments to achieve clearer help output 2016-02-20 18:43:43 +01:00
Eduard Braun
72c2ec8e1c Add possibility to specify input/output filename using positional arguments (e.g. 'scour input.svg output.svg') 2016-02-20 17:57:30 +01:00
Tobias Oberstein
ab90d18cb2 Merge pull request #45 from Ede123/console_output
Switch order of new/old size in console output
2016-02-19 14:08:29 +01:00
Eduard Braun
b042c93b2c Switch order of new/old size in console output
(It already looked like a fraction, now it also yields the correct result if it's read like one)
2016-02-19 04:47:33 +01:00
Eduard Braun
e701acdc25 Add a mechanism to sanitize options.
This simplifies usage of the Scour module while avoiding any compatibility issues that might be caused by adding/removing/renaming options.
2016-02-19 04:03:59 +01:00
Tobias Oberstein
170f8c7baa turn down log noise; improve logging 2016-01-29 09:25:43 +01:00
Eitot
184efee16e - Initial support for Sketch
- Typos in README.md
2015-12-24 17:07:40 +01:00
Tobias Oberstein
130a71327a Merge pull request #28 from Ede123/comments
Simplify and fix "removeComments()"
2015-12-10 23:34:59 +01:00
Eduard Braun
c698522c28 Simplify and fix "removeComments()"
* The separate treatment of comments at the documentElement's level is not necessary - they have a parent (as tested in Python 3.5.0 and 2.7.11 and 2.6.6)! It might not have worked before due to a typo - note the "if isinstance(element,...)" and "len(element.data)" which should both refer to "subelement" instead - or a bug in very old versions of Python).
* Fix the iteration over childNodes (i.e. replace "for subelement in element.childNodes:" with ""for subelement in element.childNodes[:]:". We have to create a copy of the list to iterate over, otherwise we'd be iterating over a list as we change it which leads to unpredictable results.

Fixes #25
2015-12-10 22:51:27 +01:00
Eduard Braun
8984e550b0 Read from stdin in binary mode an let XML parser deal with encoding. Also write to stdout in binary mode as the output is already encoded. 2015-12-09 00:30:16 +01:00
Eduard Braun
4eade69201 Open input file in binary mode an let XML parser deal with encoding.
Fixes #26
2015-12-08 23:38:06 +01:00
Eduard Braun
ab1aa0e2f8 Fix a bug with "points" attribute of "polyline/polygon" starting with a negative number.
In this case "len(nums) = 0" and "nums[len(nums)-1]" triggered an "IndexError: list index out of range"
2015-12-06 23:47:56 +01:00
Eduard Braun
2293e1bd4a Fix regex for list of points splitting: Expect at least one whitespace character or comma between coords.
The previous regex would have allowed zero length matches and therefore could have split the string after every character - luckily this was not (yet) correctly implemented in Python. Since Python 3.5 a warning is raised informing of this problem. Future versions will correctly split also at zero length matches.

See also note on https://docs.python.org/3/library/re.html#re.split
2015-12-06 22:53:03 +01:00
Eduard Braun
c54c5e5d7e Unittests: Fix warnings
- Replace deprecated assertion-aliases
- Make sure opened files are properly closed after usage
2015-12-06 22:13:21 +01:00
Eduard Braun
6254548582 Compatibility fix for Python 2.6
(NamedNodeList seems not to have had the iterkeys method back then)
2015-11-21 23:29:59 +01:00
Tobias Oberstein
46a2ada361 Merge pull request #14 from Ede123/namespaces
Remove unused XML namespace declarations
2015-11-17 23:18:46 +01:00
Eduard Braun
532f664001 Minor fix in console output (superfluous space) 2015-11-17 23:09:25 +01:00
Eduard Braun
89f4b687f2 Statistics: count also attributes removed from root SVG element 2015-11-17 22:49:50 +01:00
Eduard Braun
67bacc2f23 Remove metadata right away
(i.e. before checking for unused XML namespaces; otherwise the relevant namespaces used for metadata would not yet be unused)
2015-11-17 22:46:50 +01:00
Eduard Braun
b979fe19e5 Remove unused XML namespace declarations 2015-11-17 22:30:23 +01:00
Tobias Oberstein
302f7f7477 use absolute imports 2015-11-16 20:36:12 +01:00
Tobias Oberstein
e903475289 cleanups; bump version 2015-11-16 18:05:35 +01:00
Eduard Braun
7e36be4aaa Add an option to strip the xml:space="preserve" attribute from the root SVG element
This attribute is added by at least one popular vector graphics editor thwarting our efforts to pretty-print the output.
2015-11-15 19:26:39 +01:00
Eduard Braun
e21e362353 Add an option to suppress output of line breaks
(obviously this also disables indentation)
2015-11-15 18:44:17 +01:00
Eduard Braun
18266ca1ec Add an option to set number of spaces (or tabs used for indentation) 2015-11-15 18:14:03 +01:00
Andy Levisay
d1c66cc75b Python 3 Updates
Ran python-modernizer, this fixed most of the Python 3
incompatibilities.

Had to manually rework the iteration in svg_regex and svg_transform;
.next doesn't exist in Python 3. Wrapped the builtin next function in a
partial for equivalent functionality.
2015-04-28 15:26:55 -05:00
Tobias Oberstein
85dff51cc9 fix ingoring of additional args when invoked from scons; bump version 2014-08-05 12:47:33 +02:00
Tobias Oberstein
26a360a00c add option to ingore unknown cmd line opts; bump version 2014-07-26 17:20:47 +02:00
Tobias Oberstein
43ee078ee6 Merge pull request #3 from flosse/master
fixed version string
2014-03-10 00:22:47 +01:00
Tobias Oberstein
e01fac82a4 Merge pull request #2 from flosse/keep-unreferenced-defs
added option to keep elements within defs
2014-03-10 00:22:27 +01:00
mdxs
f7165f66a9 Small typo fix in doc string of parseListOfPoints 2014-03-09 23:44:06 +01:00
Markus Kohlhase
9bb929d91e added option to keep elements within defs 2014-01-12 17:10:02 +01:00
Markus Kohlhase
edcaeba905 fixed version string 2014-01-12 16:56:56 +01:00
Markus Kohlhase
ae4d9303f1 support custom id prefixes 2014-01-10 23:42:02 +01:00
Tobias Oberstein
3353500845 allow direct calling of module 2013-10-26 17:47:42 +02:00
Tobias Oberstein
8dc6137373 whitespace cleanup 2013-10-26 16:43:39 +02:00
Tobias Oberstein
f89b6bbf6a initial source import (v0.26) and packaging 2013-10-22 16:31:42 +02:00