stringify.js
1 'use strict'; 2 3 const utils = require('./utils'); 4 5 module.exports = (ast, options = {}) => { 6 let stringify = (node, parent = {}) => { 7 let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent); 8 let invalidNode = node.invalid === true && options.escapeInvalid === true; 9 let output = ''; 10 11 if (node.value) { 12 if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) { 13 return '\\' + node.value; 14 } 15 return node.value; 16 } 17 18 if (node.value) { 19 return node.value; 20 } 21 22 if (node.nodes) { 23 for (let child of node.nodes) { 24 output += stringify(child); 25 } 26 } 27 return output; 28 }; 29 30 return stringify(ast); 31 }; 32