1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- "use strict";
- var __spreadArrays = (this && this.__spreadArrays) || function () {
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
- r[k] = a[j];
- return r;
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var actionTypes = {
- equals: "",
- element: "~",
- start: "^",
- end: "$",
- any: "*",
- not: "!",
- hyphen: "|",
- };
- var charsToEscape = new Set(__spreadArrays(Object.keys(actionTypes)
- .map(function (typeKey) { return actionTypes[typeKey]; })
- .filter(Boolean), [
- ":",
- "[",
- "]",
- " ",
- "\\",
- ]));
- function stringify(token) {
- return token.map(stringifySubselector).join(", ");
- }
- exports.default = stringify;
- function stringifySubselector(token) {
- return token.map(stringifyToken).join("");
- }
- function stringifyToken(token) {
- switch (token.type) {
- // Simple types
- case "child":
- return " > ";
- case "parent":
- return " < ";
- case "sibling":
- return " ~ ";
- case "adjacent":
- return " + ";
- case "descendant":
- return " ";
- case "universal":
- return "*";
- case "tag":
- return escapeName(token.name);
- case "pseudo-element":
- return "::" + escapeName(token.name);
- case "pseudo":
- if (token.data === null)
- return ":" + escapeName(token.name);
- if (typeof token.data === "string") {
- return ":" + escapeName(token.name) + "(" + token.data + ")";
- }
- return ":" + escapeName(token.name) + "(" + stringify(token.data) + ")";
- case "attribute":
- if (token.action === "exists") {
- return "[" + escapeName(token.name) + "]";
- }
- if (token.name === "id" &&
- token.action === "equals" &&
- !token.ignoreCase) {
- return "#" + escapeName(token.value);
- }
- if (token.name === "class" &&
- token.action === "element" &&
- !token.ignoreCase) {
- return "." + escapeName(token.value);
- }
- return "[" + escapeName(token.name) + actionTypes[token.action] + "='" + escapeName(token.value) + "'" + (token.ignoreCase ? "i" : "") + "]";
- }
- }
- function escapeName(str) {
- return str
- .split("")
- .map(function (c) { return (charsToEscape.has(c) ? "\\" + c : c); })
- .join("");
- }
|