diff options
author | RaindropsSys <raindrops@equestria.dev> | 2023-11-17 23:25:29 +0100 |
---|---|---|
committer | RaindropsSys <raindrops@equestria.dev> | 2023-11-17 23:25:29 +0100 |
commit | 953ddd82e48dd206cef5ac94456549aed13b3ad5 (patch) | |
tree | 8f003106ee2e7f422e5a22d2ee04d0db302e66c0 /includes/external/addressbook/node_modules/nth-check/lib/esm/compile.js | |
parent | 62a9199846b0c07c03218703b33e8385764f42d9 (diff) | |
download | pluralconnect-953ddd82e48dd206cef5ac94456549aed13b3ad5.tar.gz pluralconnect-953ddd82e48dd206cef5ac94456549aed13b3ad5.tar.bz2 pluralconnect-953ddd82e48dd206cef5ac94456549aed13b3ad5.zip |
Updated 30 files and deleted 2976 files (automated)
Diffstat (limited to 'includes/external/addressbook/node_modules/nth-check/lib/esm/compile.js')
-rw-r--r-- | includes/external/addressbook/node_modules/nth-check/lib/esm/compile.js | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/includes/external/addressbook/node_modules/nth-check/lib/esm/compile.js b/includes/external/addressbook/node_modules/nth-check/lib/esm/compile.js deleted file mode 100644 index 317d378..0000000 --- a/includes/external/addressbook/node_modules/nth-check/lib/esm/compile.js +++ /dev/null @@ -1,113 +0,0 @@ -import boolbase from "boolbase"; -/** - * Returns a function that checks if an elements index matches the given rule - * highly optimized to return the fastest solution. - * - * @param parsed A tuple [a, b], as returned by `parse`. - * @returns A highly optimized function that returns whether an index matches the nth-check. - * @example - * - * ```js - * const check = nthCheck.compile([2, 3]); - * - * check(0); // `false` - * check(1); // `false` - * check(2); // `true` - * check(3); // `false` - * check(4); // `true` - * check(5); // `false` - * check(6); // `true` - * ``` - */ -export function compile(parsed) { - const a = parsed[0]; - // Subtract 1 from `b`, to convert from one- to zero-indexed. - const b = parsed[1] - 1; - /* - * When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`. - * Besides, the specification states that no elements are - * matched when `a` and `b` are 0. - * - * `b < 0` here as we subtracted 1 from `b` above. - */ - if (b < 0 && a <= 0) - return boolbase.falseFunc; - // When `a` is in the range -1..1, it matches any element (so only `b` is checked). - if (a === -1) - return (index) => index <= b; - if (a === 0) - return (index) => index === b; - // When `b <= 0` and `a === 1`, they match any element. - if (a === 1) - return b < 0 ? boolbase.trueFunc : (index) => index >= b; - /* - * Otherwise, modulo can be used to check if there is a match. - * - * Modulo doesn't care about the sign, so let's use `a`s absolute value. - */ - const absA = Math.abs(a); - // Get `b mod a`, + a if this is negative. - const bMod = ((b % absA) + absA) % absA; - return a > 1 - ? (index) => index >= b && index % absA === bMod - : (index) => index <= b && index % absA === bMod; -} -/** - * Returns a function that produces a monotonously increasing sequence of indices. - * - * If the sequence has an end, the returned function will return `null` after - * the last index in the sequence. - * - * @param parsed A tuple [a, b], as returned by `parse`. - * @returns A function that produces a sequence of indices. - * @example <caption>Always increasing (2n+3)</caption> - * - * ```js - * const gen = nthCheck.generate([2, 3]) - * - * gen() // `1` - * gen() // `3` - * gen() // `5` - * gen() // `8` - * gen() // `11` - * ``` - * - * @example <caption>With end value (-2n+10)</caption> - * - * ```js - * - * const gen = nthCheck.generate([-2, 5]); - * - * gen() // 0 - * gen() // 2 - * gen() // 4 - * gen() // null - * ``` - */ -export function generate(parsed) { - const a = parsed[0]; - // Subtract 1 from `b`, to convert from one- to zero-indexed. - let b = parsed[1] - 1; - let n = 0; - // Make sure to always return an increasing sequence - if (a < 0) { - const aPos = -a; - // Get `b mod a` - const minValue = ((b % aPos) + aPos) % aPos; - return () => { - const val = minValue + aPos * n++; - return val > b ? null : val; - }; - } - if (a === 0) - return b < 0 - ? // There are no result — always return `null` - () => null - : // Return `b` exactly once - () => (n++ === 0 ? b : null); - if (b < 0) { - b += a * Math.ceil(-b / a); - } - return () => a * n++ + b; -} -//# sourceMappingURL=compile.js.map
\ No newline at end of file |