Skip to content

Commit

Permalink
fixes fromTransformAttribute issue when parsing exponential values
Browse files Browse the repository at this point in the history
  • Loading branch information
chrvadala committed Jan 1, 2021
1 parent 111592d commit c193647
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 13 deletions.
23 changes: 13 additions & 10 deletions src/fromTransformAttribute.autogenerated.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions src/fromTransformAttribute.pegjs
Original file line number Diff line number Diff line change
Expand Up @@ -83,15 +83,15 @@ integerConstant
= ds:digitSequence { return ds.join(""); }

floatingPointConstant
= fractionalConstant exponent?
/ digitSequence exponent
= f:fractionalConstant e:exponent? { return [f, e || null].join("")}
/ d:digitSequence e:exponent { return [d, e].join("")}

fractionalConstant "fractionalConstant"
= d1:digitSequence? "." d2:digitSequence { return [d1 ? d1.join("") : null, ".", d2.join("")].join(""); }
/ d:digitSequence "." { return d.join(""); }

exponent
= [eE] sign? digitSequence
= [eE] s:sign? d:digitSequence { return ['e', s, d.join("")].join("") }

sign
= [+-]
Expand Down
15 changes: 15 additions & 0 deletions test/fromTransformAttribute.pegjs.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,21 @@ describe('fromTransformAttribute.pegjs', () => {
})
})

describe('exponential values', () => {
it('should parse without errors', () => {
// it is tested with rotate function, but it doesn't matter because any parser make use of the same number parser
expect(parse('rotate(1e1)')).toEqual([{ type: 'rotate', angle: 1e1 }])
expect(parse('rotate(-1e1)')).toEqual([{ type: 'rotate', angle: -1e1 }])
expect(parse('rotate(1e-1)')).toEqual([{ type: 'rotate', angle: 1e-1 }])
expect(parse('rotate(-1e-1)')).toEqual([{ type: 'rotate', angle: -1e-1 }])

expect(parse('rotate(1.1e1)')).toEqual([{ type: 'rotate', angle: 1.1e1 }])
expect(parse('rotate(-1.1e1)')).toEqual([{ type: 'rotate', angle: -1.1e1 }])
expect(parse('rotate(1.1e-1)')).toEqual([{ type: 'rotate', angle: 1.1e-1 }])
expect(parse('rotate(-1.1e-1)')).toEqual([{ type: 'rotate', angle: -1.1e-1 }])
})
})

describe('complex transformations', () => {
it('should parse in the right order', () => {
expect(parse('translate(1,2) translate(3,4) translate(5,6)')).toEqual([
Expand Down

0 comments on commit c193647

Please # to comment.