summaryrefslogtreecommitdiffstats
path: root/js/vendor/dav/lib/template/filter.js
blob: cf2d3b04b3e29bd98e1b96050fc3a92c970df636 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
export default function filter(item) {
  if (!item.children || !item.children.length) {
    return `<c:${item.type} ${formatAttrs(item.attrs)}/>`;
  }

  let children = item.children.map(filter);
  return `<c:${item.type} ${formatAttrs(item.attrs)}>
            ${children}
          </c:${item.type}>`;
}

function formatAttrs(attrs) {
  if (typeof attrs !== 'object') {
    return '';
  }

  return Object.keys(attrs)
    .map(attr => `${attr}="${attrs[attr]}"`)
    .join(' ');
}