hunk.code_window:     return domEach(this, function (i, el) {
         return exports.text.call(self._make(el), str.call(el, i, text([el])));
       });
     }
     var opts = this.options;
     // Append text node to each selected elements
     domEach(this, function (i, el) {
       el.children.forEach(function (child) {
         child.next = child.prev = child.parent = null;
       });
  
hunk.labels: keep keep keep keep keep replace replace keep keep keep keep keep
hunk.file_path: lib/api/manipulation.js
hunk.type: replace
file: <?js
      var params = obj;
  
      /* sort subparams under their parent params (like opts.classname) */
      var parentParam = null;
      params.forEach(function(param, i) {
          var paramRegExp;
  
          if (!param) {
              return;
          }
  
          if (parentParam && parentParam.name && param.name) {
              try {
                  paramRegExp = new RegExp('^(?:' + parentParam.name + '(?:\\[\\])*)\\.(.+)$');
              }
              catch (e) {
                  // there's probably a typo in the JSDoc comment that resulted in a weird
                  // parameter name
                  return;
              }
  
              if ( paramRegExp.test(param.name) ) {
                  param.name = RegExp.$1;
                  parentParam.subparams = parentParam.subparams || [];
                  parentParam.subparams.push(param);
                  params[i] = null;
              }
              else {
                  parentParam = param;
              }
          }
          else {
              parentParam = param;
          }
      });
  
      /* determine if we need extra columns, "attributes" and "default" */
      params.hasAttributes = false;
      params.hasDefault = false;
      params.hasName = false;
  
      params.forEach(function(param) {
          if (!param) { return; }
  
          if (param.optional || param.nullable || param.variable) {
              params.hasAttributes = true;
          }
  
          if (param.name) {
              params.hasName = true;
          }
  
          if (typeof param.defaultvalue !== 'undefined') {
              params.hasDefault = true;
          }
      });
  ?>
  
  <table class="params">
      <thead>
      <tr>
          <?js if (params.hasName) {?>
          <th>Name</th>
          <?js } ?>
  
          <th>Type</th>
  
          <?js if (params.hasAttributes) {?>
          <th>Attributes</th>
          <?js } ?>
  
          <?js if (params.hasDefault) {?>
          <th>Default</th>
          <?js } ?>
  
          <th class="last">Description</th>
      </tr>
      </thead>
  
      <tbody>
      <?js
          var self = this;
          params.forEach(function(param) {
              if (!param) { return; }
      ?>
  
          <tr>
              <?js if (params.hasName) {?>
                  <td class="name"><code><?js= param.name ?></code></td>
              <?js } ?>
  
              <td class="type">
              <?js if (param.type && param.type.names) {?>
                  <?js= self.partial('type.tmpl', param.type.names) ?>
              <?js } ?>
              </td>
  
              <?js if (params.hasAttributes) {?>
                  <td class="attributes">
                  <?js if (param.optional) { ?>
                      &lt;optional><br>
                  <?js } ?>
  
                  <?js if (param.nullable) { ?>
                      &lt;nullable><br>
                  <?js } ?>
  
                  <?js if (param.variable) { ?>
                      &lt;repeatable><br>
                  <?js } ?>
                  </td>
              <?js } ?>
  
              <?js if (params.hasDefault) {?>
                  <td class="default">
                  <?js if (typeof param.defaultvalue !== 'undefined') { ?>
                      <?js= self.htmlsafe(param.defaultvalue) ?>
                  <?js } ?>
                  </td>
              <?js } ?>
  
              <td class="description last"><?js= param.description ?><?js if (param.subparams) { ?>
                  <h6>Properties</h6>
                  <?js= self.partial('params.tmpl', param.subparams) ?>
              <?js } ?></td>
          </tr>
  
      <?js }); ?>
      </tbody>
  </table>
  