ÿØÿà JFIF ÿá Exif MM * ÿÛ C
Server IP : 199.250.214.225 / Your IP : 18.226.164.58 Web Server : Apache System : Linux vps64074.inmotionhosting.com 3.10.0-1160.105.1.vz7.214.3 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : nicngo5 ( 1001) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /home/nicngo5/funds.upgrade.nicn.gov.ng/funds-upgraded/node_modules/clean-css/lib/optimizer/level-2/ |
Upload File : |
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;