Skip to content

Commit

Permalink
Integer number
Browse files Browse the repository at this point in the history
  • Loading branch information
barsdeveloper committed Jan 3, 2024
1 parent 8e7986e commit 1d86ef7
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 8 deletions.
14 changes: 8 additions & 6 deletions dist/parsernostrum.js
Original file line number Diff line number Diff line change
Expand Up @@ -731,7 +731,6 @@ class Parsernostrum {
/** @type {(new (parser: Parser<any>) => Parsernostrum<typeof parser>) & typeof Parsernostrum} */
Self

static #numberMapper = v => Number(v)
/** @param {[any, ...any]|RegExpExecArray} param0 */
static #firstElementGetter = ([v, _]) => v
/** @param {[any, any, ...any]|RegExpExecArray} param0 */
Expand All @@ -749,22 +748,25 @@ class Parsernostrum {

/** Parser accepting any valid decimal, possibly signed number */
static number = this.regexp(new RegExp(this.#numberRegex.source + String.raw`(?!\.)`))
.map(this.#numberMapper)
.map(Number)

/** Parser accepting any digits only number */
static numberNatural = this.regexp(/\d+/).map(this.#numberMapper)
static numberInteger = this.regexp(/[\-\+]?\d+(?!\.\d)/).map(Number)

/** Parser accepting any digits only number */
static numberNatural = this.regexp(/\d+/).map(Number)

/** Parser accepting any valid decimal, possibly signed, possibly in the exponential form number */
static numberExponential = this.regexp(new RegExp(this.#numberRegex.source + String.raw`(?:[eE][\+\-]?\d+)?(?!\.)`))
.map(this.#numberMapper)
.map(Number)

/** Parser accepting any valid decimal number between 0 and 1 */
static numberUnit = this.regexp(/\+?(?:0(?:\.\d+)?|1(?:\.0+)?)(?![\.\d])/)
.map(this.#numberMapper)
.map(Number)

/** Parser accepting any integer between 0 and 255 */
static numberByte = this.regexp(/0*(?:25[0-5]|2[0-4]\d|1?\d?\d)(?!\d|\.)/)
.map(this.#numberMapper)
.map(Number)

/** Parser accepting whitespace */
static whitespace = this.regexp(/\s+/)
Expand Down
2 changes: 1 addition & 1 deletion dist/parsernostrum.min.js

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

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "parsernostrum",
"type": "module",
"version": "1.0.7",
"version": "1.0.8",
"description": "A tiny LL parser combinator library for javascript",
"main": "src/Parsernostrum.js",
"types": "src/types.js",
Expand Down
3 changes: 3 additions & 0 deletions src/Parsernostrum.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ export default class Parsernostrum {
static number = this.regexp(new RegExp(this.#numberRegex.source + String.raw`(?!\.)`))
.map(Number)

/** Parser accepting any digits only number */
static numberInteger = this.regexp(/[\-\+]?\d+(?!\.\d)/).map(Number)

/** Parser accepting any digits only number */
static numberNatural = this.regexp(/\d+/).map(Number)

Expand Down
13 changes: 13 additions & 0 deletions tests/simple.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,19 @@ test("Number", async ({ page }) => {
expect(() => p.parse("alpha")).toThrowError()
})

test("Number integer", async ({ page }) => {
const p = P.numberInteger
expect(p.parse("0")).toEqual(0)
expect(p.parse("+0")).toEqual(0)
expect(p.parse("-0")).toEqual(-0)
expect(p.parse("00")).toEqual(0)
expect(p.parse("+6")).toEqual(6)
expect(p.parse("-99")).toEqual(-99)
expect(p.parse("5833")).toEqual(5833)
expect(p.parse("000077")).toEqual(77)
expect(() => p.parse("+0.5")).toThrowError()
})

test("Number natural", async ({ page }) => {
const p = P.numberNatural
expect(p.parse("0")).toEqual(0)
Expand Down

0 comments on commit 1d86ef7

Please sign in to comment.