summaryrefslogtreecommitdiffhomepage
path: root/vhosts/blog/nuldoc-src/atom/generate.ts
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-01-13 19:33:35 +0900
committernsfisis <nsfisis@gmail.com>2025-01-13 19:37:50 +0900
commitb36def683cb0bfe251c623c826ec7918b69a96b2 (patch)
tree267c73086d7445f92ab45f407272c227ae83e4cb /vhosts/blog/nuldoc-src/atom/generate.ts
parentb14dd149e1b5f75bc494623181b19970ef830dec (diff)
downloadnsfisis.dev-b36def683cb0bfe251c623c826ec7918b69a96b2.tar.gz
nsfisis.dev-b36def683cb0bfe251c623c826ec7918b69a96b2.tar.zst
nsfisis.dev-b36def683cb0bfe251c623c826ec7918b69a96b2.zip
refactor(blog/nuldoc): use JSX notation to generate Atom pages
Diffstat (limited to 'vhosts/blog/nuldoc-src/atom/generate.ts')
-rw-r--r--vhosts/blog/nuldoc-src/atom/generate.ts85
1 files changed, 0 insertions, 85 deletions
diff --git a/vhosts/blog/nuldoc-src/atom/generate.ts b/vhosts/blog/nuldoc-src/atom/generate.ts
deleted file mode 100644
index 3c76f6c5..00000000
--- a/vhosts/blog/nuldoc-src/atom/generate.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-import { Config } from "../config.ts";
-import { el } from "../dom.ts";
-import { Page } from "../page.ts";
-import { Entry, Feed } from "./types.ts";
-import { PostPage } from "../generators/post.ts";
-import { SlidePage } from "../generators/slide.ts";
-import { dateToRfc3339String } from "../revision.ts";
-
-const BASE_NAME = "atom.xml";
-
-export function generateFeedPageFromEntries(
- alternateLink: string,
- feedSlug: string,
- feedTitle: string,
- entries: Array<PostPage | SlidePage>,
- config: Config,
-): Page {
- const entries_: Entry[] = [];
- for (const entry of entries) {
- entries_.push({
- id: `urn:uuid:${entry.uuid}`,
- linkToAlternate: `https://${config.blog.fqdn}${entry.href}`,
- title: entry.title,
- summary: entry.description,
- published: dateToRfc3339String(entry.published),
- updated: dateToRfc3339String(entry.updated),
- });
- }
- // Sort by published date in ascending order.
- entries_.sort((a, b) => {
- if (a.published < b.published) {
- return 1;
- } else if (a.published > b.published) {
- return -1;
- }
- return 0;
- });
- const feedPath = `${alternateLink}${BASE_NAME}`;
- const feed: Feed = {
- author: config.blog.author,
- icon: `https://${config.blog.fqdn}/favicon.svg`,
- id: `tag:${config.blog.fqdn},${config.blog.siteCopyrightYear}:${feedSlug}`,
- linkToSelf: `https://${config.blog.fqdn}${feedPath}`,
- linkToAlternate: `https://${config.blog.fqdn}${alternateLink}`,
- title: feedTitle,
- updated: entries_.reduce(
- (latest, entry) => entry.updated > latest ? entry.updated : latest,
- entries_[0].updated,
- ),
- entries: entries_,
- };
-
- return {
- root: buildXmlTree(feed),
- renderer: "xml",
- destFilePath: feedPath,
- href: feedPath,
- };
-}
-
-function buildXmlTree(feed: Feed) {
- return el(
- "feed",
- { xmlns: "http://www.w3.org/2005/Atom" },
- el("id", {}, feed.id),
- el("title", {}, feed.title),
- el("link", { rel: "alternate", href: feed.linkToAlternate }),
- el("link", { rel: "self", href: feed.linkToSelf }),
- el("author", {}, el("name", {}, feed.author)),
- el("updated", {}, feed.updated),
- ...feed.entries.map(
- (entry) =>
- el(
- "entry",
- {},
- el("id", {}, entry.id),
- el("link", { rel: "alternate", href: entry.linkToAlternate }),
- el("title", {}, entry.title),
- el("summary", {}, entry.summary),
- el("published", {}, entry.published),
- el("updated", {}, entry.updated),
- ),
- ),
- );
-}