123456789101112131415161718192021222324252627282930313233343536373839 |
- "use strict";
- // Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.parse = void 0;
- // [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?
- var RE_NTH_ELEMENT = /^([+-]?\d*n)?\s*(?:([+-]?)\s*(\d+))?$/;
- /**
- * Parses an expression.
- *
- * @throws An `Error` if parsing fails.
- * @returns An array containing the integer step size and the integer offset of the nth rule.
- * @example nthCheck.parse("2n+3"); // returns [2, 3]
- */
- function parse(formula) {
- formula = formula.trim().toLowerCase();
- if (formula === "even") {
- return [2, 0];
- }
- else if (formula === "odd") {
- return [2, 1];
- }
- var parsed = formula.match(RE_NTH_ELEMENT);
- if (!parsed) {
- throw new Error("n-th rule couldn't be parsed ('" + formula + "')");
- }
- var a;
- if (parsed[1]) {
- a = parseInt(parsed[1], 10);
- if (isNaN(a)) {
- a = parsed[1].startsWith("-") ? -1 : 1;
- }
- }
- else
- a = 0;
- var b = (parsed[2] === "-" ? -1 : 1) *
- (parsed[3] ? parseInt(parsed[3], 10) : 0);
- return [a, b];
- }
- exports.parse = parse;
|