1
0
mirror of https://github.com/svg/svgo.git synced 2025-08-09 02:22:08 +03:00

E-notated numbers in paths not recognised (fix #63)

This commit is contained in:
deepsweet
2012-12-06 22:20:25 +02:00
parent 0044611d10
commit bab164e4ca
4 changed files with 11 additions and 9 deletions

View File

@@ -1,6 +1,6 @@
'use strict';
var regNumericValues = /^([\-+]?\d*\.?\d+)(px|pt|pc|mm|cm|m|in|ft|em|ex|%)?$/,
var regNumericValues = /^([\-+]?\d*\.?\d+(\.\d+)?([eE][\-+]?\d+)?)(px|pt|pc|mm|cm|m|in|ft|em|ex|%)?$/,
removeLeadingZero = require('../lib/svgo/tools').removeLeadingZero;
/**
@@ -26,7 +26,7 @@ exports.cleanupNumericValues = function(item, params) {
if (match) {
// round it to the fixed precision
var num = +(+match[1]).toFixed(params.floatPrecision),
units = match[2] || '';
units = match[4] || '';
// and remove leading zero
if (params.leadingZero) {

View File

@@ -2,7 +2,7 @@
var cleanupOutData = require('../lib/svgo/tools').cleanupOutData,
regPathInstructions = /([MmLlHhVvCcSsQqTtAaZz])\s*/,
regPathData = /(?=-)|[\s,]+/,
regPathData = /[\-+]?\d*\.?\d+(\.\d+)?([eE][\-+]?\d+)?/g,
pathElems = ['path', 'glyph', 'missing-glyph'],
hasMarkerMid;
@@ -73,17 +73,17 @@ function path2js(pathString) {
// data item
} else {
// M 35.898 14.374 L 35.898 14.374 → M35.898 14.374L35.898 14.374
data = data.trim().split(regPathData).map(function(str) {
return +str;
});
data = data.trim().match(regPathData);
// very stupid defense strategy
if (typeof data[0] === 'number' && !isNaN(data[0])) {
if (data) {
var index = 0,
pair = 2;
data = data.map(function(str) {
return +str;
});
// deal with very first 'Mm' and multiple points data
if ('Mm'.indexOf(instruction) > -1) {

View File

@@ -3,6 +3,7 @@
<path d="M 10 50"/>
<path d="M10 50"/>
<path d="M10,50"/>
<path d="M10-3.05176e-005"/>
<path d="M 10 , 50"/>
<path d="M -10,-50"/>
<path d="M -10 -50"/>

Before

Width:  |  Height:  |  Size: 342 B

After

Width:  |  Height:  |  Size: 375 B

View File

@@ -3,6 +3,7 @@
<path d="M10 50"/>
<path d="M10 50"/>
<path d="M10 50"/>
<path d="M10 0"/>
<path d="M10 50"/>
<path d="M-10-50"/>
<path d="M-10-50"/>

Before

Width:  |  Height:  |  Size: 327 B

After

Width:  |  Height:  |  Size: 349 B