Sha256: c5cd3cf111da1023364ff0111230318ea1405a90aec377e21b7bd57f8ee90e94
Contents?: true
Size: 1.42 KB
Versions: 18
Compression:
Stored size: 1.42 KB
Contents
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]; };
Version data entries
18 entries across 18 versions & 4 rubygems