module.exports = parse;
//following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo
//[ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?
var re_nthElement = /^([+\-]?\d*n)?\s*(?:([+\-]?)\s*(\d+))?$/;
/*
parses a nth-check formula, returns an array of two numbers
*/
function parse(formula) {
formula = formula.trim().toLowerCase();
if (formula === "even") {
return [2, 0];
} else if (formula === "odd") {
return [2, 1];
} else {
var parsed = formula.match(re_nthElement);
if (!parsed) {
throw new SyntaxError(
"n-th rule couldn't be parsed ('" + formula + "')"
);
}
var a;
if (parsed[1]) {
a = parseInt(parsed[1], 10);
if (isNaN(a)) {
if (parsed[1].charAt(0) === "-") a = -1;
else a = 1;
}
} else a = 0;
return [a, parsed[3] ? parseInt((parsed[2] || "") + parsed[3], 10) : 0];
}
}