aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlrich-Matthias Schäfer <ulima.ums@googlemail.com>2023-09-03 10:49:11 +0200
committerUlrich-Matthias Schäfer <ulima.ums@googlemail.com>2023-09-03 10:49:11 +0200
commit06ac034aee7f00f99aec4b55f4a2386371cb5794 (patch)
tree4ac7f1c86defc99876d4b3c4cd7d4465e10c6641
parentca8ac554bfafe6b4d7985fe3130ff3dffa6029ca (diff)
downloadsvg.js-06ac034aee7f00f99aec4b55f4a2386371cb5794.tar.gz
svg.js-06ac034aee7f00f99aec4b55f4a2386371cb5794.zip
allow + as delemiter in paths (fixes #1165)
-rw-r--r--spec/spec/utils/pathParser.js6
-rw-r--r--src/utils/pathParser.js5
2 files changed, 9 insertions, 2 deletions
diff --git a/spec/spec/utils/pathParser.js b/spec/spec/utils/pathParser.js
index 15d0453..fdf10c7 100644
--- a/spec/spec/utils/pathParser.js
+++ b/spec/spec/utils/pathParser.js
@@ -159,6 +159,12 @@ describe('pathParser.js', () => {
['a', 48.0, 48.0, 0.0, 1.0, 1.0, 48.0, -48.0],
['a', 48.0, 48.0, 0.0, 0.0, 1.0, -48.0, 48.0]
])
+
+ expect(pathParser('M0+0 L100+0 L50+100')).toEqual([
+ ['M', 0, 0],
+ ['L', 100, 0],
+ ['L', 50, 100]
+ ])
})
})
})
diff --git a/src/utils/pathParser.js b/src/utils/pathParser.js
index 6d3f4e2..2b97add 100644
--- a/src/utils/pathParser.js
+++ b/src/utils/pathParser.js
@@ -152,6 +152,7 @@ function isExponential(parser) {
return parser.lastToken.toUpperCase() === 'E'
}
+const pathDelimiters = new Set([' ', ',', '\t', '\n', '\r', '\f'])
export function pathParser(d, toAbsolute = true) {
let index = 0
let token = ''
@@ -201,14 +202,14 @@ export function pathParser(d, toAbsolute = true) {
continue
}
- if (token === ' ' || token === ',') {
+ if (pathDelimiters.has(token)) {
if (parser.inNumber) {
finalizeNumber(parser, false)
}
continue
}
- if (token === '-') {
+ if (token === '-' || token === '+') {
if (parser.inNumber && !isExponential(parser)) {
finalizeNumber(parser, false)
--index