Convert feed.ts to a mithril template

a8328f90f7a84456456190f7501f41f4ce61a09c

Tucker McKnight <tucker@pangolin.lan> | Sun Jan 25 2026

Convert feed.ts to a mithril template
js_templates/feed.ts:1
Before
1
After
1
import m from 'mithril'
import render from 'mithril-node-render'
js_templates/feed.ts:15
Before
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    return `<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Latest patches in ${branch.branchName}</title>
<link href="${ data.reposConfig.baseUrl + '/repos/' + slugify(branch.repoName) + '/branches/' + slugify(branch.branchName) + '/commits.xml'}" rel="self" />
<link href="${data.reposConfig.baseUrl + '/repos/' + slugify(branch.repoName) + '/branches/' + slugify(branch.branchName)}" />
<updated>${dateToRfc3339(currentRepo.commits.get(currentBranch.head).date)}</updated>
<id>${data.reposConfig.baseUrl}</id>
  <author>
    <name>${_.escape(currentRepo.name)} contributors</name>
  </author>
  ${currentBranchCommits.map((commit) => {
    const commitUrl = data.reposConfig.baseUrl + '/repos/' + slugify(branch.repoName) + '/branches/' + slugify(branch.branchName) + '/commits/' + commit.commit.hash
  return `<entry>
    <title>${_.escape(commit.commit.message.split('\n')[0])}</title>
    <author><name>${_.escape(commit.commit.author)}</name></author>
    <link href="${commitUrl}" />
    <updated>${dateToRfc3339(commit.commit.date)}</updated>
    <id>${commitUrl}</id>
    <content type="text">${_.escape(commit.commit.message)}</content>
  </entry>`
  })}
</feed>`
After
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    return render([
      m.trust('<?xml version="1.0" encoding="utf-8"?>'),
      m('feed', {xmlns: "http://www.w3.org/2005/Atom"}, [
        m('title', `Latest patches in ${branch.branchName}`),
        m.trust(`<link href="${ data.reposConfig.baseUrl + '/repos/' + slugify(branch.repoName) + '/branches/' + slugify(branch.branchName) + '/commits.xml'}" rel="self" />`),
        m.trust(`<link href="${data.reposConfig.baseUrl + '/repos/' + slugify(branch.repoName) + '/branches/' + slugify(branch.branchName)}" />`),
        m('updated', dateToRfc3339(currentRepo.commits.get(currentBranch.head).date)),
        m('id', data.reposConfig.baseUrl),
        m('author',
          m('name', `${_.escape(currentRepo.name)} contributors`)
        ),
        currentBranchCommits.map((commit) => {
          const commitUrl = data.reposConfig.baseUrl + '/repos/' + slugify(branch.repoName) + '/branches/' + slugify(branch.branchName) + '/commits/' + commit.commit.hash
          return m('entry', [
            m('title', _.escape(commit.commit.message.split('\n')[0])),
            m('author', m('name', _.escape(commit.commit.author))),
            m.trust(`<link href="${commitUrl}" />`),
            m('updated', dateToRfc3339(commit.commit.date)),
            m('id', commitUrl),
            m('content', {type: "text"}, _.escape(commit.commit.message)),
          ])
        })
      ])
    ])