diff options
author | Ray Glover <Ray@NAUSICA> | 2015-08-14 16:59:01 +0100 |
---|---|---|
committer | Ray Glover <Ray@NAUSICA> | 2015-08-14 16:59:01 +0100 |
commit | 65f9900d5e98272a1c0c0d9ca922666603110804 (patch) | |
tree | e2224ccc1f00080a475ccbaee296327052c20a9d | |
parent | 32b8e6c0ebab0409586fa91ab3b11918aa4bfc96 (diff) | |
download | svg.js-65f9900d5e98272a1c0c0d9ca922666603110804.tar.gz svg.js-65f9900d5e98272a1c0c0d9ca922666603110804.zip |
Make parsing a <transform-list> more robust in the face of IE11
which doesn't use commas (',') to delimit matrix elements. see also:
http://www.w3.org/TR/SVG11/coords.html#SVGGlobalTransformAttribute
-rw-r--r-- | src/helpers.js | 2 | ||||
-rw-r--r-- | src/regex.js | 3 | ||||
-rw-r--r-- | src/transform.js | 2 |
3 files changed, 5 insertions, 2 deletions
diff --git a/src/helpers.js b/src/helpers.js index 7fe9f7a..f3a36b9 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -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( diff --git a/src/regex.js b/src/regex.js index d08dc7b..a6ffb98 100644 --- a/src/regex.js +++ b/src/regex.js @@ -14,6 +14,9 @@ SVG.regex = { // Parse matrix wrapper , matrix: /matrix\(|\)/g + + // Elements of a matrix +, matrixElements: /,*\s+|,/ // Whitespace , whitespace: /\s/g diff --git a/src/transform.js b/src/transform.js index 2023439..c1afd73 100644 --- a/src/transform.js +++ b/src/transform.js @@ -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){ |