From 3e79f237eb5bfdbb853ee449b5099c64a17bfac1 Mon Sep 17 00:00:00 2001 From: rowan Date: Sun, 25 May 2025 08:33:35 -0500 Subject: [PATCH] massage the numbers, --- src/multi.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/multi.js b/src/multi.js index c734096..b84bca6 100644 --- a/src/multi.js +++ b/src/multi.js @@ -46,18 +46,23 @@ 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 _range = (start, end, step = 1, deny = []) => { + const len = end - start - deny.length + 1 const result = new Array(len) for (let i = 0, n = start; i <= len; i += i, n += step) { + if (deny.includes(n)) { continue } result[i] = n } return result } -export const range = (start, end) => { - return anyChar(_range(start.codePointAt(0), end.codePointAt(0))) +const code = s => s.codePointAt(0) + +export const range = (start, end, deny = []) => { + return anyChar( + _range(code(start), code(end), deny.map(code)).map(String.fromCodePoint) + ) }