|
|
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var actionTypes = {
- equals: "",
- element: "~",
- start: "^",
- end: "$",
- any: "*",
- not: "!",
- hyphen: "|"
- };
- var simpleSelectors = {
- child: " > ",
- parent: " < ",
- sibling: " ~ ",
- adjacent: " + ",
- descendant: " ",
- universal: "*"
- };
- function stringify(token) {
- return token.map(stringifySubselector).join(", ");
- }
- exports.default = stringify;
- function stringifySubselector(token) {
- return token.map(stringifyToken).join("");
- }
- function stringifyToken(token) {
- if (token.type in simpleSelectors)
- return simpleSelectors[token.type];
- if (token.type === "tag")
- return escapeName(token.name);
- if (token.type === "pseudo-element")
- return "::" + escapeName(token.name);
- if (token.type === "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);
- }
- var atributeName = escapeName(token.name);
- var action = actionTypes[token.action];
- var value = escapeName(token.value);
- var ignoreCase = token.ignoreCase ? "i" : "";
- return "[" + atributeName + action + "='" + value + "'" + ignoreCase + "]";
- }
- if (token.type === "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) + ")";
- }
- throw new Error("Unknown type");
- }
- function escapeName(str) {
- //TODO
- return str;
- }
|