| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | const merge = require('merge-options');const renderer = require('posthtml-render');const api = require('posthtml/lib/api');const defaultOptions = {  closingSingleTag: 'slash',  singleTags: [    'circle',    'path',    'ellipse',    'line',    'path',    'polygon',    'polyline',    'rect',    'use',    'animateTransform',    'stop'  ]};/** * @param {PostHTMLTree} tree * @param {Object|null} [options] {@see https://github.com/posthtml/posthtml-render#options} */module.exports = function xmlRenderer(tree, options) {  const opts = merge(defaultOptions, options || {});  /**   * Workaround for https://github.com/fb55/htmlparser2/issues/187   * Also see https://github.com/fb55/htmlparser2/pull/129   */  opts.singleTags = opts.singleTags.filter((tag) => {    let hasContent = false;    api.match.call(tree, { tag }, (node) => {      if (typeof node.content !== 'undefined' && !hasContent) {        hasContent = true;      }      return node;    });    return !hasContent;  });  return renderer(tree, opts);};module.exports.defaultOptions = defaultOptions;
 |