]> source.dussan.org Git - svg.js.git/commitdiff
allow + as delemiter in paths (fixes #1165)
authorUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Sun, 3 Sep 2023 08:49:11 +0000 (10:49 +0200)
committerUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Sun, 3 Sep 2023 08:49:11 +0000 (10:49 +0200)
spec/spec/utils/pathParser.js
src/utils/pathParser.js

index 15d04538d283976845c5136d554a30a92b2abe25..fdf10c7c83eb1a053e12bc1e1c91d42b3cf95f8d 100644 (file)
@@ -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]
+      ])
     })
   })
 })
index 6d3f4e25ab930d91ae3f6c110f391ba0bd5da7b1..2b97add9371da9c7d106ff8a301cb9a3526d572f 100644 (file)
@@ -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