'use strict'; 
 | 
  
 | 
const utils = require('./utils'); 
 | 
  
 | 
module.exports = (ast, options = {}) => { 
 | 
  let stringify = (node, parent = {}) => { 
 | 
    let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent); 
 | 
    let invalidNode = node.invalid === true && options.escapeInvalid === true; 
 | 
    let output = ''; 
 | 
  
 | 
    if (node.value) { 
 | 
      if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) { 
 | 
        return '\\' + node.value; 
 | 
      } 
 | 
      return node.value; 
 | 
    } 
 | 
  
 | 
    if (node.value) { 
 | 
      return node.value; 
 | 
    } 
 | 
  
 | 
    if (node.nodes) { 
 | 
      for (let child of node.nodes) { 
 | 
        output += stringify(child); 
 | 
      } 
 | 
    } 
 | 
    return output; 
 | 
  }; 
 | 
  
 | 
  return stringify(ast); 
 | 
}; 
 |