From 920038de1945298e5a693cc11fd97a73e48b9bc8 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Fri, 14 Jan 2022 20:32:32 +0530 Subject: feat: removes + for number literal (causes issues with js regex syntax) --- src/parser/index.ts | 5 ++--- tests/parser.spec.ts | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/parser/index.ts b/src/parser/index.ts index d1da542..a2276bb 100644 --- a/src/parser/index.ts +++ b/src/parser/index.ts @@ -81,12 +81,11 @@ const unsignedNum: Parser = mapTo( ) const numberLiteral: Parser = mapTo( - pair(optional(oneOf(['+', '-'])), unsignedNum), + pair(optional(matchChar('-')), unsignedNum), ([signO, n]) => pipe( signO, - Option.getOrElse(() => '+'), - sign => (sign === '-' ? -1 : 1) * n, + negative => (Option.isSome(negative) ? -1 : 1) * n, Literal.Number, ), ) diff --git a/tests/parser.spec.ts b/tests/parser.spec.ts index 8a53faf..0abb1a0 100644 --- a/tests/parser.spec.ts +++ b/tests/parser.spec.ts @@ -117,13 +117,13 @@ describe('Parser', () => { ) // signed numbers - expect(parser(/ +23.025 /.source)).toEqual( + expect(parser(/ 23.025 /.source)).toEqual( wrap(Expr.Literal(Literal.Number(23.025))), ) expect(parser(/ -23.025 /.source)).toEqual( wrap(Expr.Literal(Literal.Number(-23.025))), ) - expect(parser(/ +23 /.source)).toEqual( + expect(parser(/ 23 /.source)).toEqual( wrap(Expr.Literal(Literal.Number(23))), ) expect(parser(/ -23 /.source)).toEqual( -- cgit v1.3.1