specificities-overlap.js 822 B

123456789101112131415161718192021222324252627282930313233343536
  1. var specificity = require('./specificity');
  2. function specificitiesOverlap(selector1, selector2, cache) {
  3. var specificity1;
  4. var specificity2;
  5. var i, l;
  6. var j, m;
  7. for (i = 0, l = selector1.length; i < l; i++) {
  8. specificity1 = findSpecificity(selector1[i][1], cache);
  9. for (j = 0, m = selector2.length; j < m; j++) {
  10. specificity2 = findSpecificity(selector2[j][1], cache);
  11. if (specificity1[0] === specificity2[0]
  12. && specificity1[1] === specificity2[1]
  13. && specificity1[2] === specificity2[2]) {
  14. return true;
  15. }
  16. }
  17. }
  18. return false;
  19. }
  20. function findSpecificity(selector, cache) {
  21. var value;
  22. if (!(selector in cache)) {
  23. cache[selector] = value = specificity(selector);
  24. }
  25. return value || cache[selector];
  26. }
  27. module.exports = specificitiesOverlap;