aboutsummaryrefslogtreecommitdiff
path: root/node_modules/clean-css/lib/optimizer/level-2/specificity.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/clean-css/lib/optimizer/level-2/specificity.js')
-rw-r--r--node_modules/clean-css/lib/optimizer/level-2/specificity.js77
1 files changed, 0 insertions, 77 deletions
diff --git a/node_modules/clean-css/lib/optimizer/level-2/specificity.js b/node_modules/clean-css/lib/optimizer/level-2/specificity.js
deleted file mode 100644
index bbd224f1..00000000
--- a/node_modules/clean-css/lib/optimizer/level-2/specificity.js
+++ /dev/null
@@ -1,77 +0,0 @@
-var Marker = require('../../tokenizer/marker');
-
-var Selector = {
- ADJACENT_SIBLING: '+',
- DESCENDANT: '>',
- DOT: '.',
- HASH: '#',
- NON_ADJACENT_SIBLING: '~',
- PSEUDO: ':'
-};
-
-var LETTER_PATTERN = /[a-zA-Z]/;
-var NOT_PREFIX = ':not(';
-var SEPARATOR_PATTERN = /[\s,\(>~\+]/;
-
-function specificity(selector) {
- var result = [0, 0, 0];
- var character;
- var isEscaped;
- var isSingleQuoted;
- var isDoubleQuoted;
- var roundBracketLevel = 0;
- var couldIntroduceNewTypeSelector;
- var withinNotPseudoClass = false;
- var wasPseudoClass = false;
- var i, l;
-
- for (i = 0, l = selector.length; i < l; i++) {
- character = selector[i];
-
- if (isEscaped) {
- // noop
- } else if (character == Marker.SINGLE_QUOTE && !isDoubleQuoted && !isSingleQuoted) {
- isSingleQuoted = true;
- } else if (character == Marker.SINGLE_QUOTE && !isDoubleQuoted && isSingleQuoted) {
- isSingleQuoted = false;
- } else if (character == Marker.DOUBLE_QUOTE && !isDoubleQuoted && !isSingleQuoted) {
- isDoubleQuoted = true;
- } else if (character == Marker.DOUBLE_QUOTE && isDoubleQuoted && !isSingleQuoted) {
- isDoubleQuoted = false;
- } else if (isSingleQuoted || isDoubleQuoted) {
- continue;
- } else if (roundBracketLevel > 0 && !withinNotPseudoClass) {
- // noop
- } else if (character == Marker.OPEN_ROUND_BRACKET) {
- roundBracketLevel++;
- } else if (character == Marker.CLOSE_ROUND_BRACKET && roundBracketLevel == 1) {
- roundBracketLevel--;
- withinNotPseudoClass = false;
- } else if (character == Marker.CLOSE_ROUND_BRACKET) {
- roundBracketLevel--;
- } else if (character == Selector.HASH) {
- result[0]++;
- } else if (character == Selector.DOT || character == Marker.OPEN_SQUARE_BRACKET) {
- result[1]++;
- } else if (character == Selector.PSEUDO && !wasPseudoClass && !isNotPseudoClass(selector, i)) {
- result[1]++;
- withinNotPseudoClass = false;
- } else if (character == Selector.PSEUDO) {
- withinNotPseudoClass = true;
- } else if ((i === 0 || couldIntroduceNewTypeSelector) && LETTER_PATTERN.test(character)) {
- result[2]++;
- }
-
- isEscaped = character == Marker.BACK_SLASH;
- wasPseudoClass = character == Selector.PSEUDO;
- couldIntroduceNewTypeSelector = !isEscaped && SEPARATOR_PATTERN.test(character);
- }
-
- return result;
-}
-
-function isNotPseudoClass(selector, index) {
- return selector.indexOf(NOT_PREFIX, index) === index;
-}
-
-module.exports = specificity;