You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
module.exports = function specificity(simpleSelector) { var A = 0; var B = 0; var C = 0;
simpleSelector.children.each(function walk(node) { switch (node.type) { case 'SelectorList': case 'Selector': node.children.each(walk); break;
case 'IdSelector': A++; break;
case 'ClassSelector': case 'AttributeSelector': B++; break;
case 'PseudoClassSelector': switch (node.name.toLowerCase()) { case 'not': node.children.each(walk); break;
case 'before': case 'after': case 'first-line': case 'first-letter': C++; break;
// TODO: support for :nth-*(.. of <SelectorList>), :matches(), :has()
default: B++; } break;
case 'PseudoElementSelector': C++; break;
case 'TypeSelector': // ignore universal selector
if (node.name.charAt(node.name.length - 1) !== '*') { C++; } break;
} });
return [A, B, C]; };
|