code: function makeSaxParser(handler) {
      // Accept quoted or unquoted keys (Closure compat)
      var hcopy = {
        cdata: handler.cdata || handler['cdata'],
        comment: handler.comment || handler['comment'],
        endDoc: handler.endDoc || handler['endDoc'],
        endTag: handler.endTag || handler['endTag'],
        pcdata: handler.pcdata || handler['pcdata'],
        rcdata: handler.rcdata || handler['rcdata'],
        startDoc: handler.startDoc || handler['startDoc'],
        startTag: handler.startTag || handler['startTag']
      };
      return function(htmlText, param) {
        return parse(htmlText, hcopy, param);
      };
    }
docs: Given a SAX-like event handler, produce a function that feeds those
  events and a parameter to the event handler.
  
  The event handler has the form:{@code
  {
  // Name is an upper-case HTML tag name.  Attribs is an array of
  // alternating upper-case attribute names, and attribute values.  The
  // attribs array is reused by the parser.  Param is the value passed to
  // the saxParser.
  startTag: function (name, attribs, param) { ... },
  endTag:   function (name, param) { ... },
  pcdata:   function (text, param) { ... },
  rcdata:   function (text, param) { ... },
  cdata:    function (text, param) { ... },
  startDoc: function (param) { ... },
  endDoc:   function (param) { ... }
  }}
  
  @param {Object} handler a record containing event handlers.
  @return {function(string, Object)} A function that takes a chunk of HTML
  and a parameter.  The parameter is passed on to the handler methods.