aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2022-01-14 20:32:32 +0530
committerAkshay Nair <phenax5@gmail.com>2022-01-14 20:34:00 +0530
commit920038de1945298e5a693cc11fd97a73e48b9bc8 (patch)
tree3d15e1e2355784d04cbeefd199376434295ae770
parentc2c6e8d1258158f61fba026ded1e48ffc5b36cf6 (diff)
downloadelxr-920038de1945298e5a693cc11fd97a73e48b9bc8.tar.gz
elxr-920038de1945298e5a693cc11fd97a73e48b9bc8.zip
feat: removes + for number literal (causes issues with js regex syntax)
-rw-r--r--src/parser/index.ts5
-rw-r--r--tests/parser.spec.ts4
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<number> = mapTo(
)
const numberLiteral: Parser<Literal> = 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(