]> source.dussan.org Git - svg.js.git/commitdiff
fix for arc flags parsing
authorMike Wilkerson <11575183+mlwilkerson@users.noreply.github.com>
Sat, 12 Dec 2020 16:39:31 +0000 (08:39 -0800)
committerMike Wilkerson <11575183+mlwilkerson@users.noreply.github.com>
Sat, 12 Dec 2020 16:51:35 +0000 (08:51 -0800)
spec/spec/utils/pathParser.js
src/utils/pathParser.js

index cc3382db81d02ceab9fa1bb07fc69febff6ca4ea..58d1453ef3e86aa886b39d56e8d854465a9a5090 100644 (file)
@@ -102,6 +102,32 @@ describe('pathParser.js', () => {
         [ 'L', 0.3, 0.3 ],
         [ 'Z' ]
       ])
+
+      // "a" commands without optional whitespace around the flag params
+      expect(pathParser('a32 32 0 00.03-45.22', false)).toEqual([
+        [ 'a', 32.0, 32.0, 0.0, 0.0, 0.0, 0.03, -45.22 ],
+      ])
+
+      expect(pathParser('a48 48 0 1148-48', false)).toEqual([
+        [ 'a', 48.0, 48.0, 0.0, 1.0, 1.0, 48.0, -48.0],
+      ])
+
+      expect(pathParser('a82.6 82.6 0 0033.48-20.25', false)).toEqual([
+        [ 'a', 82.6, 82.6, 0.0, 0.0, 0.0, 33.48, -20.25 ],
+      ])
+
+      expect(pathParser('a82.45 82.45 0 00-20.24 33.47', false)).toEqual([
+        [ 'a', 82.45, 82.45, 0.0, 0.0, 0.0, -20.24, 33.47 ],
+      ])
+
+      expect(pathParser('a2.51 2.51 0 01.25.32', false)).toEqual([
+        [ 'a', 2.51, 2.51, 0, 0, 1, 0.25, 0.32 ],
+      ])
+
+      expect(pathParser('a48 48 0 1148-48 48 48 0 01-48 48', false)).toEqual([
+        [ '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 ]
+      ])
     })
   })
 })
index 1ab90a306cac1888b1bb073b5ee17e40170ffe03..54e22e62cc7a208e5e26777990a1593a81721087 100644 (file)
@@ -176,8 +176,11 @@ export function pathParser (d, toAbsolute = true) {
 
     if (!isNaN(parseInt(token))) {
 
-      if (parser.number === '0' || (parser.inNumber && isArcFlag(parser))) {
+      if (parser.number === '0' || isArcFlag(parser)) {
+        parser.inNumber = true
+        parser.number = token
         finalizeNumber(parser, true)
+        continue
       }
 
       parser.inNumber = true