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); 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;