From 9a56b99effd1b22544df55715a0fc346618d4e07 Mon Sep 17 00:00:00 2001 From: rowan Date: Sun, 25 May 2025 08:21:36 -0500 Subject: [PATCH] range parser, move typings --- package.json | 2 +- src/multi.js | 15 +++++++++++++++ tsconfig.json | 7 +++++-- typings/dist/index.d.ts | 0 {src => typings/src}/byte.d.ts | 0 {src => typings/src}/clone.d.ts | 0 {src => typings/src}/combinator.d.ts | 0 {src => typings/src}/cond.d.ts | 0 {src => typings/src}/const.d.ts | 0 {src => typings/src}/fn.d.ts | 0 {src => typings/src}/index.d.ts | 0 {src => typings/src}/iter.d.ts | 0 {src => typings/src}/multi.d.ts | 1 + {src => typings/src}/state.d.ts | 0 {src => typings/src}/tuple.d.ts | 0 typings/tests/index.d.ts | 2 ++ typings/tests/units/bytes.d.ts | 1 + typings/tests/units/common.d.ts | 3 +++ typings/tests/units/cond.d.ts | 1 + typings/tests/units/index.d.ts | 3 +++ typings/tests/units/iter.d.ts | 1 + 21 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 typings/dist/index.d.ts rename {src => typings/src}/byte.d.ts (100%) rename {src => typings/src}/clone.d.ts (100%) rename {src => typings/src}/combinator.d.ts (100%) rename {src => typings/src}/cond.d.ts (100%) rename {src => typings/src}/const.d.ts (100%) rename {src => typings/src}/fn.d.ts (100%) rename {src => typings/src}/index.d.ts (100%) rename {src => typings/src}/iter.d.ts (100%) rename {src => typings/src}/multi.d.ts (84%) rename {src => typings/src}/state.d.ts (100%) rename {src => typings/src}/tuple.d.ts (100%) create mode 100644 typings/tests/index.d.ts create mode 100644 typings/tests/units/bytes.d.ts create mode 100644 typings/tests/units/common.d.ts create mode 100644 typings/tests/units/cond.d.ts create mode 100644 typings/tests/units/index.d.ts create mode 100644 typings/tests/units/iter.d.ts diff --git a/package.json b/package.json index 0d3c59e..f324348 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "type": "module", "main": "./src/index.js", - "types": "./src/index.d.ts", + "types": "./typings/index.d.ts", "author": "Rowan (https://kitsu.cafe)", "scripts": { "test": "./tests/index.js", diff --git a/src/multi.js b/src/multi.js index dff32c6..c734096 100644 --- a/src/multi.js +++ b/src/multi.js @@ -46,3 +46,18 @@ export const many = curry((parser, state) => { export const many1 = parser => seq(parser, many(parser)) +const _range = (start, end, step = 1) => { + const len = end - start + 1 + const result = new Array(len) + + for (let i = 0, n = start; i <= len; i += i, n += step) { + result[i] = n + } + + return result +} + +export const range = (start, end) => { + return anyChar(_range(start.codePointAt(0), end.codePointAt(0))) +} + diff --git a/tsconfig.json b/tsconfig.json index 4d6930c..13ee4c5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -59,7 +59,7 @@ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ + "outDir": "./typings", /* Specify an output folder for all emitted files. */ // "removeComments": true, /* Disable emitting comments. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ @@ -109,5 +109,8 @@ /* Completeness */ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } + }, + "exclude": [ + "typings" + ] } diff --git a/typings/dist/index.d.ts b/typings/dist/index.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/byte.d.ts b/typings/src/byte.d.ts similarity index 100% rename from src/byte.d.ts rename to typings/src/byte.d.ts diff --git a/src/clone.d.ts b/typings/src/clone.d.ts similarity index 100% rename from src/clone.d.ts rename to typings/src/clone.d.ts diff --git a/src/combinator.d.ts b/typings/src/combinator.d.ts similarity index 100% rename from src/combinator.d.ts rename to typings/src/combinator.d.ts diff --git a/src/cond.d.ts b/typings/src/cond.d.ts similarity index 100% rename from src/cond.d.ts rename to typings/src/cond.d.ts diff --git a/src/const.d.ts b/typings/src/const.d.ts similarity index 100% rename from src/const.d.ts rename to typings/src/const.d.ts diff --git a/src/fn.d.ts b/typings/src/fn.d.ts similarity index 100% rename from src/fn.d.ts rename to typings/src/fn.d.ts diff --git a/src/index.d.ts b/typings/src/index.d.ts similarity index 100% rename from src/index.d.ts rename to typings/src/index.d.ts diff --git a/src/iter.d.ts b/typings/src/iter.d.ts similarity index 100% rename from src/iter.d.ts rename to typings/src/iter.d.ts diff --git a/src/multi.d.ts b/typings/src/multi.d.ts similarity index 84% rename from src/multi.d.ts rename to typings/src/multi.d.ts index 602faa2..929ce12 100644 --- a/src/multi.d.ts +++ b/typings/src/multi.d.ts @@ -5,3 +5,4 @@ export const takeUntil: any; export const skip: any; export const many: any; export function many1(parser: any): any; +export function range(start: any, end: any): any; diff --git a/src/state.d.ts b/typings/src/state.d.ts similarity index 100% rename from src/state.d.ts rename to typings/src/state.d.ts diff --git a/src/tuple.d.ts b/typings/src/tuple.d.ts similarity index 100% rename from src/tuple.d.ts rename to typings/src/tuple.d.ts diff --git a/typings/tests/index.d.ts b/typings/tests/index.d.ts new file mode 100644 index 0000000..b798801 --- /dev/null +++ b/typings/tests/index.d.ts @@ -0,0 +1,2 @@ +#!/usr/bin/env node +export {}; diff --git a/typings/tests/units/bytes.d.ts b/typings/tests/units/bytes.d.ts new file mode 100644 index 0000000..feba6d8 --- /dev/null +++ b/typings/tests/units/bytes.d.ts @@ -0,0 +1 @@ +export const Byte: any[]; diff --git a/typings/tests/units/common.d.ts b/typings/tests/units/common.d.ts new file mode 100644 index 0000000..f614221 --- /dev/null +++ b/typings/tests/units/common.d.ts @@ -0,0 +1,3 @@ +export const assertState: any; +export const parseEq: any; +export const parseErr: any; diff --git a/typings/tests/units/cond.d.ts b/typings/tests/units/cond.d.ts new file mode 100644 index 0000000..b6db36d --- /dev/null +++ b/typings/tests/units/cond.d.ts @@ -0,0 +1 @@ +export const Conditionals: any[]; diff --git a/typings/tests/units/index.d.ts b/typings/tests/units/index.d.ts new file mode 100644 index 0000000..7e6d287 --- /dev/null +++ b/typings/tests/units/index.d.ts @@ -0,0 +1,3 @@ +export * from "./bytes.js"; +export * from "./iter.js"; +export * from "./cond.js"; diff --git a/typings/tests/units/iter.d.ts b/typings/tests/units/iter.d.ts new file mode 100644 index 0000000..c5e3d0c --- /dev/null +++ b/typings/tests/units/iter.d.ts @@ -0,0 +1 @@ +export const Iterator: any[];