summaryrefslogtreecommitdiff
path: root/includes/external/addressbook/node_modules/nth-check/lib/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/addressbook/node_modules/nth-check/lib/index.js')
-rw-r--r--includes/external/addressbook/node_modules/nth-check/lib/index.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/includes/external/addressbook/node_modules/nth-check/lib/index.js b/includes/external/addressbook/node_modules/nth-check/lib/index.js
new file mode 100644
index 0000000..30a7e29
--- /dev/null
+++ b/includes/external/addressbook/node_modules/nth-check/lib/index.js
@@ -0,0 +1,70 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.sequence = exports.generate = exports.compile = exports.parse = void 0;
+var parse_js_1 = require("./parse.js");
+Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return parse_js_1.parse; } });
+var compile_js_1 = require("./compile.js");
+Object.defineProperty(exports, "compile", { enumerable: true, get: function () { return compile_js_1.compile; } });
+Object.defineProperty(exports, "generate", { enumerable: true, get: function () { return compile_js_1.generate; } });
+/**
+ * Parses and compiles a formula to a highly optimized function.
+ * Combination of {@link parse} and {@link compile}.
+ *
+ * If the formula doesn't match any elements,
+ * it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.
+ * Otherwise, a function accepting an _index_ is returned, which returns
+ * whether or not the passed _index_ matches the formula.
+ *
+ * Note: The nth-rule starts counting at `1`, the returned function at `0`.
+ *
+ * @param formula The formula to compile.
+ * @example
+ * const check = nthCheck("2n+3");
+ *
+ * check(0); // `false`
+ * check(1); // `false`
+ * check(2); // `true`
+ * check(3); // `false`
+ * check(4); // `true`
+ * check(5); // `false`
+ * check(6); // `true`
+ */
+function nthCheck(formula) {
+ return (0, compile_js_1.compile)((0, parse_js_1.parse)(formula));
+}
+exports.default = nthCheck;
+/**
+ * Parses and compiles a formula to a generator that produces a sequence of indices.
+ * Combination of {@link parse} and {@link generate}.
+ *
+ * @param formula The formula to compile.
+ * @returns A function that produces a sequence of indices.
+ * @example <caption>Always increasing</caption>
+ *
+ * ```js
+ * const gen = nthCheck.sequence('2n+3')
+ *
+ * gen() // `1`
+ * gen() // `3`
+ * gen() // `5`
+ * gen() // `8`
+ * gen() // `11`
+ * ```
+ *
+ * @example <caption>With end value</caption>
+ *
+ * ```js
+ *
+ * const gen = nthCheck.sequence('-2n+5');
+ *
+ * gen() // 0
+ * gen() // 2
+ * gen() // 4
+ * gen() // null
+ * ```
+ */
+function sequence(formula) {
+ return (0, compile_js_1.generate)((0, parse_js_1.parse)(formula));
+}
+exports.sequence = sequence;
+//# sourceMappingURL=index.js.map \ No newline at end of file