Spaces:
Running
Running
function stringifyNode(node, custom) { | |
var type = node.type; | |
var value = node.value; | |
var buf; | |
var customResult; | |
if (custom && (customResult = custom(node)) !== undefined) { | |
return customResult; | |
} else if (type === "word" || type === "space") { | |
return value; | |
} else if (type === "string") { | |
buf = node.quote || ""; | |
return buf + value + (node.unclosed ? "" : buf); | |
} else if (type === "comment") { | |
return "/*" + value + (node.unclosed ? "" : "*/"); | |
} else if (type === "div") { | |
return (node.before || "") + value + (node.after || ""); | |
} else if (Array.isArray(node.nodes)) { | |
buf = stringify(node.nodes, custom); | |
if (type !== "function") { | |
return buf; | |
} | |
return ( | |
value + | |
"(" + | |
(node.before || "") + | |
buf + | |
(node.after || "") + | |
(node.unclosed ? "" : ")") | |
); | |
} | |
return value; | |
} | |
function stringify(nodes, custom) { | |
var result, i; | |
if (Array.isArray(nodes)) { | |
result = ""; | |
for (i = nodes.length - 1; ~i; i -= 1) { | |
result = stringifyNode(nodes[i], custom) + result; | |
} | |
return result; | |
} | |
return stringifyNode(nodes, custom); | |
} | |
module.exports = stringify; | |