Gildas 7 лет назад
Родитель
Сommit
20b7909fd0
1 измененных файлов с 10 добавлено и 24 удалено
  1. 10 24
      lib/single-file/css-selector-parser.js

+ 10 - 24
lib/single-file/css-selector-parser.js

@@ -125,45 +125,31 @@ this.cssWhat = this.cssWhat || (() => {
 	};
 
 	// cssEscape taken from https://mathiasbynens.be/notes/css-escapes
-	function cssEscape(string, escapeNonASCII) {
+	function cssEscape(string) {
 		const firstChar = string.charAt(0);
 		const length = string.length;
-		let value, character, charCode, output = "", counter = 0, surrogatePairCount = 0, extraCharCode; // low surrogate
+		let output = "", counter = 0;
 		while (counter < length) {
-			character = string.charAt(counter++);
-			charCode = character.charCodeAt();
-			if (escapeNonASCII && (charCode < 0x20 || charCode > 0x7E)) {
-				if ((charCode & 0xF800) == 0xD800) {
-					surrogatePairCount++;
-					extraCharCode = string.charCodeAt(counter++);
-					if ((charCode & 0xFC00) != 0xD800 || (extraCharCode & 0xFC00) != 0xDC00) {
-						throw Error("UCS-2(decode): illegal sequence");
-					}
-					charCode = ((charCode & 0x3FF) << 10) + (extraCharCode & 0x3FF) + 0x10000;
-				}
-				value = "\\" + charCode.toString(16).toUpperCase() + " ";
+			let value;
+			const character = string.charAt(counter++);
+			if (character == "\t" || character == "\n" || character == "\v" || character == "\f" || character == ":") {
+				value = "\\" + character.charCodeAt().toString(16).toUpperCase() + " ";
+			} else if (character == "[" || character == " " || character == "!" || character == "\"" || character == "#" || character == "$" || character == "%" || character == "&" || character == "'" || character == "(" || character == ")" || character == "*" || character == "+" || character == "," || character == "." || character == "/" || character == ";" || character == "<" || character == "=" || character == ">" || character == "?" || character == "@" || character == "[" || character == "\\" || character == "]" || character == "^" || character == "`" || character == "{," || character == "|" || character == "}" || character == "~" || character == "]") {
+				value = "\\" + character;
 			} else {
-				if (character == "\t" || character == "\n" || character == "\v" || character == "\f" || character == ":") {
-					value = "\\" + charCode.toString(16).toUpperCase() + " ";
-				} else if (character == "[" || character == " " || character == "!" || character == "\"" || character == "#" || character == "$" || character == "%" || character == "&" || character == "'" || character == "(" || character == ")" || character == "*" || character == "+" || character == "," || character == "." || character == "/" || character == ";" || character == "<" || character == "=" || character == ">" || character == "?" || character == "@" || character == "[" || character == "\\" || character == "]" || character == "^" || character == "`" || character == "{," || character == "|" || character == "}" || character == "~" || character == "]") {
-					value = "\\" + character;
-				} else {
-					value = character;
-				}
+				value = character;
 			}
 			output += value;
 		}
 		if (output.startsWith("_")) {
 			output = "\\_" + output.slice(1);
-		}
-		if (output.match(REGEXP_STARTS_DASH_DECIMAL)) {
+		} else if (output.match(REGEXP_STARTS_DASH_DECIMAL)) {
 			output = "\\-" + output.slice(1);
 		}
 		if (firstChar == "0" || firstChar == "1" || firstChar == "2" || firstChar == "3" || firstChar == "4" || firstChar == "5" || firstChar == "6" || firstChar == "7" || firstChar == "8" || firstChar == "9") {
 			output = "\\3" + firstChar + " " + output.slice(1);
 		}
 		return {
-			"surrogatePairCount": surrogatePairCount,
 			"output": output
 		};
 	}