Skip to content

Commit

Permalink
Merge pull request #60 from Kaiido/master
Browse files Browse the repository at this point in the history
return broken path data until the first error
  • Loading branch information
puzrin committed Oct 28, 2022
2 parents 287c612 + 08a7951 commit 0a85089
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 5 deletions.
7 changes: 2 additions & 5 deletions lib/path_parse.js
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ function scanSegment(state) {
else scanParam(state);

if (state.err.length) {
finalizeSegment(state);
return;
}
state.data.push(state.param);
Expand Down Expand Up @@ -291,11 +292,7 @@ module.exports = function pathParse(svgPath) {
scanSegment(state);
}

if (state.err.length) {
state.result = [];

} else if (state.result.length) {

if (state.result.length) {
if ('mM'.indexOf(state.result[0][0]) < 0) {
state.err = 'SvgPath: string should start with `M` or `m`';
state.result = [];
Expand Down
12 changes: 12 additions & 0 deletions test/path_parse.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,16 @@ describe('Path parse', function () {
assert.strictEqual(svgpath('M0 .e3').err, 'SvgPath: invalid float exponent (at pos 4)');
assert.strictEqual(svgpath('M0 0a2 2 2 2 2 2 2').err, 'SvgPath: arc flag can be 0 or 1 only (at pos 11)');
});

it('keeps valid commands', function () {
assert.strictEqual(svgpath('M0 0G 1').toString(), 'M0 0');
assert.strictEqual(svgpath('z').toString(), '');
assert.strictEqual(svgpath('M0 0L+').toString(), 'M0 0');
assert.strictEqual(svgpath('M0 0L00').toString(), 'M0 0');
assert.strictEqual(svgpath('M0 0L0e').toString(), 'M0 0');
assert.strictEqual(svgpath('M0 0L0').toString(), 'M0 0');
assert.strictEqual(svgpath('M0,0,').toString(), 'M0 0');
assert.strictEqual(svgpath('M0 0L0 .e3').toString(), 'M0 0');
assert.strictEqual(svgpath('M0 0a2 2 2 2 2 2 2').toString(), 'M0 0');
});
});

0 comments on commit 0a85089

Please sign in to comment.