diff options
Diffstat (limited to 'src/gen/atom.11ty.js')
-rw-r--r-- | src/gen/atom.11ty.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/gen/atom.11ty.js b/src/gen/atom.11ty.js new file mode 100644 index 0000000..0184018 --- /dev/null +++ b/src/gen/atom.11ty.js @@ -0,0 +1,30 @@ +module.exports = class { + async data() { + return { + permalink: "/feed.xml" + }; + } + + async render(data) { + return `<?xml version="1.0" encoding="utf-8"?> + <feed xmlns="http://www.w3.org/2005/Atom"> + <title>${data.metadata.title}</title> + <subtitle>${data.metadata.description}</subtitle> + <link href="${new URL(data.url, data.metadata.url)}" rel="self"/> + <link href="${data.metadata.url}"/> + <updated>${this.getNewestCollectionItemDate((data.collections.posts) || []).toISOString()}</updated> + <id>${data.metadata.url}</id> + <author> + <name>${data.metadata.author.name}</name> + <email>${data.metadata.author.email}</email> + </author> + ${(await Promise.all((data.collections.posts || []).map(async post => `<entry> + <title>${post.data.title}</title> + <link href="${new URL(post.url, data.metadata.url)}"/> + <updated>${post.date.toISOString()}</updated> + <id>${new URL(post.url, data.metadata.url)}</id> + <content type="html"><![CDATA[${await this.convertHtmlToAbsoluteUrls(post.templateContent, new URL(post.url, data.metadata.url)) || ""}]]></content> + </entry>`))).join()} + </feed>`; + } +}; |