code: function parse(html, doc) {
    if ('string' != typeof html) throw new TypeError('String expected');
  
    // default to the global `document` object
    if (!doc) doc = document;
  
    // tag name
    var m = /<([\w:]+)/.exec(html);
    if (!m) return doc.createTextNode(html);
  
    html = html.replace(/^\s+|\s+$/g, ''); // Remove leading/trailing whitespace
  
    var tag = m[1];
  
    // body support
    if (tag == 'body') {
      var el = doc.createElement('html');
      el.innerHTML = html;
      return el.removeChild(el.lastChild);
    }
  
    // wrap map
    var wrap = map[tag] || map._default;
    var depth = wrap[0];
    var prefix = wrap[1];
    var suffix = wrap[2];
    var el = doc.createElement('div');
    el.innerHTML = prefix + html + suffix;
    while (depth--) el = el.lastChild;
  
    // one element
    if (el.firstChild == el.lastChild) {
      return el.removeChild(el.firstChild);
    }
  
    // several elements
    var fragment = doc.createDocumentFragment();
    while (el.firstChild) {
      fragment.appendChild(el.removeChild(el.firstChild));
    }
  
    return fragment;
  }
docs: Parse `html` and return a DOM Node instance, which could be a TextNode,
  HTML DOM Node of some kind (<div> for example), or a DocumentFragment
  instance, depending on the contents of the `html` string.
  
  @param {String} html - HTML string to "domify"
  @param {Document} doc - The `document` instance to create the Node for
  @return {DOMNode} the TextNode, DOM Node, or DocumentFragment instance
  @api private