Urara-Blog/node_modules/.pnpm-store/v3/files/68/c6952168f56fa111ba151185b5124e9193e48171270e3d338aa6e4706d66c4e94e9f99c26987b2e44eee17714defc9e0ade023f89c1f3ff0187d96c29475c9
2022-08-14 01:14:53 +08:00

62 lines
1.5 KiB
Text

"use strict";
var cssesc = require("cssesc");
var stringify;
function escape(str, stringType) {
return cssesc(str, {
quotes: stringType === "\"" ? "double" : "single"
});
}
function stringifyWithoutBeforeAfter(tree) {
switch(tree.type) {
case "values":
return tree.nodes.map(stringify).join(",");
case "value":
return tree.nodes.map(stringify).join("");
case "item":
return tree.name;
case "nested-item":
return tree.name + "(" + tree.nodes.map(stringify).join(",") + ")";
case "invalid":
return tree.value;
case "comment":
return "/*" + tree.content + "*/";
case "string":
switch(tree.stringType) {
case "'":
return "'" + escape(tree.value, "'") + "'";
case "\"":
return "\"" + escape(tree.value, "\"") + "\"";
}
/* istanbul ignore next */
throw new Error("Invalid stringType");
case "url":
var start = "url(" + (tree.innerSpacingBefore || "");
var end = (tree.innerSpacingAfter || "") + ")";
switch(tree.stringType) {
case "'":
return start + "'" + tree.url.replace(/(\\)/g, "\\$1").replace(/'/g, "\\'") + "'" + end;
case "\"":
return start + "\"" + tree.url.replace(/(\\)/g, "\\$1").replace(/"/g, "\\\"") + "\"" + end;
default:
return start + tree.url.replace(/("|'|\)|\\)/g, "\\$1") + end;
}
}
}
stringify = function stringify(tree) {
var str = stringifyWithoutBeforeAfter(tree);
if(tree.before) {
str = tree.before + str;
}
if(tree.after) {
str = str + tree.after;
}
return str;
};
module.exports = stringify;