]> source.dussan.org Git - svg.js.git/commitdiff
Make parsing a <transform-list> more robust in the face of IE11
authorRay Glover <Ray@NAUSICA>
Fri, 14 Aug 2015 15:59:01 +0000 (16:59 +0100)
committerRay Glover <Ray@NAUSICA>
Fri, 14 Aug 2015 15:59:01 +0000 (16:59 +0100)
which doesn't use commas (',') to delimit matrix elements. see also:
http://www.w3.org/TR/SVG11/coords.html#SVGGlobalTransformAttribute

src/helpers.js
src/regex.js
src/transform.js

index 7fe9f7a1e2470a0e779537e0de235074184b21a1..f3a36b9f9603199e473d64d137b39b4c48650a95 100644 (file)
@@ -72,7 +72,7 @@ function stringToMatrix(source) {
   source = source
     .replace(SVG.regex.whitespace, '')
     .replace(SVG.regex.matrix, '')
-    .split(',')
+    .split(SVG.regex.matrixElements)
 
   // convert string values to floats and convert to a matrix-formatted object
   return arrayToMatrix(
index d08dc7bef5a5c67b5ab055a2252a62215c159d8d..a6ffb98029d1a3177c5a39142338286bbac4d700 100644 (file)
@@ -14,6 +14,9 @@ SVG.regex = {
   
   // Parse matrix wrapper
 , matrix:           /matrix\(|\)/g
+
+  // Elements of a matrix
+, matrixElements:   /,*\s+|,/
   
   // Whitespace
 , whitespace:       /\s/g
index 202343996fb12dae9b6c61becb0130f40fc05257..c1afd732969f4f106eb46e348c079d43f2f59d6c 100644 (file)
@@ -130,7 +130,7 @@ SVG.extend(SVG.Element, {
       .split(/\)\s*/).slice(0,-1).map(function(str){
         // generate key => value pairs
         var kv = str.trim().split('(')
-        return [kv[0], kv[1].split(',').map(function(str){ return parseFloat(str) })]
+        return [kv[0], kv[1].split(SVG.regex.matrixElements).map(function(str){ return parseFloat(str) })]
       })
       // calculate every transformation into one matrix
       .reduce(function(matrix, transform){