summaryrefslogtreecommitdiff
path: root/website/src
diff options
context:
space:
mode:
Diffstat (limited to 'website/src')
-rw-r--r--website/src/pages/microlog/[...slug].astro26
1 files changed, 26 insertions, 0 deletions
diff --git a/website/src/pages/microlog/[...slug].astro b/website/src/pages/microlog/[...slug].astro
new file mode 100644
index 0000000..69c94b0
--- /dev/null
+++ b/website/src/pages/microlog/[...slug].astro
@@ -0,0 +1,26 @@
+---
+import { type CollectionEntry, getCollection, render } from 'astro:content';
+import MicrologPost from '../../layouts/MicrologPost.astro';
+import { renderGemtextToHtml } from '../../renderGemtextToHtml';
+
+export async function getStaticPaths() {
+ const posts = await getCollection('microlog');
+ return posts.map((post) => ({
+ params: { slug: post.id },
+ props: post,
+ }));
+}
+type Props = CollectionEntry<'microlog'>;
+
+const { id: slug, body } = Astro.props;
+const pubDateStr = slug.replaceAll(/\.[0-9]+/g, '');
+const pubDate = new Date(pubDateStr);
+if (isNaN(pubDate.valueOf())) {
+ throw new Error(`Could not construct a valid publication date for microlog post: ${slug}`);
+}
+const Content = renderGemtextToHtml(body ?? '', pubDateStr);
+---
+
+<MicrologPost pubDate={pubDate} title={pubDateStr}>
+ <Fragment set:html={Content}></Fragment>
+</MicrologPost>