code: function compileHTML(html, opts, pcex) {
    if (Array.isArray(opts)) {
      pcex = opts
      opts = {}
    }
    else {
      if (!pcex) pcex = []
      if (!opts) opts = {}
    }
  
    html = html.replace(/\r\n?/g, '\n').replace(HTML_COMMENT,
      function (s) { return s[0] === '<' ? '' : s }).replace(TRIM_TRAIL, '')
  
    // `_bp` is undefined when `compileHTML` is not called by compile
    if (!pcex._bp) pcex._bp = brackets.array(opts.brackets)
  
    return _compileHTML(html, opts, pcex)
  }
docs: Parses and formats the HTML text.
  
  @param   {string} html   - Can contain embedded HTML comments and literal whitespace
  @param   {Object} opts   - Collected user options. Includes the brackets array in `_bp`
  @param   {Array}  [pcex] - Keeps precompiled expressions
  @returns {string} The parsed HTML text
  @see http://www.w3.org/TR/html5/syntax.html
   istanbul ignore next