From 20fe91f6283464257d8fdc18b82848e489a2d0c9 Mon Sep 17 00:00:00 2001 From: Leni Aniva Date: Thu, 6 Mar 2025 09:10:35 -0800 Subject: [PATCH] fix: Metadata generation --- src/content/post/diagram.typ | 5 +---- src/lib/posts.ts | 3 +-- src/lib/typst.js | 22 ++++++++++------------ src/routes/post/[slug]/+page.svelte | 3 +++ src/routes/post/[slug]/+page.ts | 13 ++++++++++++- 5 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/content/post/diagram.typ b/src/content/post/diagram.typ index 55351a5..fcf68cb 100644 --- a/src/content/post/diagram.typ +++ b/src/content/post/diagram.typ @@ -1,13 +1,10 @@ #import "@preview/cetz:0.3.2" + #metadata(( title: "Title", date: "2025-01-01", )) -//#set page(width: auto, height: auto, margin: .5cm) - -#show math.equation: block.with(fill: white, inset: 1pt) - This is a diagram. #html.frame(cetz.canvas(length: 3cm, { diff --git a/src/lib/posts.ts b/src/lib/posts.ts index a92b1cb..44a3670 100644 --- a/src/lib/posts.ts +++ b/src/lib/posts.ts @@ -23,8 +23,7 @@ export async function getPosts(filter: { tag?: string, series?: string }) : Prom let posts: Post[] = await Promise.all( iterablePostFiles.map(async ([pathMarkdown, resolver]) => { const { metadata } = await resolver(); - console.log(await resolver()); - const slug = pathMarkdown.slice(pathMarkdown.lastIndexOf("/") + 1, -".md".length); + const slug = pathMarkdown.slice(pathMarkdown.lastIndexOf("/") + 1, pathMarkdown.lastIndexOf(".")); return transformPostMeta(metadata, slug); }) diff --git a/src/lib/typst.js b/src/lib/typst.js index 9d93192..437f00a 100644 --- a/src/lib/typst.js +++ b/src/lib/typst.js @@ -13,25 +13,23 @@ export const typstPreprocess = (config) => { markup: async ({content: _, filename}) => { const extensionsParts = extensions.map((ext) => - ext.startsWith('.') ? ext : '.' + ext - ); - if (!extensionsParts.some((ext) => filename.endsWith(ext))) return; - - console.log("Processing typst file: ", filename); + ext.startsWith('.') ? ext : '.' + ext + ); + if (!extensionsParts.some((ext) => filename.endsWith(ext))) return; const result_metadata = await exec_async(`typst query --features html ${filename} "" --field value --one`); const payload = String(result_metadata.stdout); - const data = JSON.parse(payload); - console.log("data", data); + const metadata = JSON.parse(payload); - const result_post = await exec_async(`typst compile --features html ${filename} -`); - const code = String(result_post.stdout) + const result_post = await exec_async(`typst compile --features html --format html ${filename} -`); + const bodyHTML = /([\s\S]*)<\/body>/.exec(result_post.stdout)[1] + const code = "" + bodyHTML return { code, - metadata: data, - data, - map: '', + data: { + fm: metadata, + }, } } }; diff --git a/src/routes/post/[slug]/+page.svelte b/src/routes/post/[slug]/+page.svelte index f7609be..ffa4eb1 100644 --- a/src/routes/post/[slug]/+page.svelte +++ b/src/routes/post/[slug]/+page.svelte @@ -53,4 +53,7 @@ padding-left: 2em; padding-right: 2em; } + :global(svg) { + margin: auto; + } diff --git a/src/routes/post/[slug]/+page.ts b/src/routes/post/[slug]/+page.ts index 3415d7e..b8bb5cc 100644 --- a/src/routes/post/[slug]/+page.ts +++ b/src/routes/post/[slug]/+page.ts @@ -3,9 +3,20 @@ import type { PageLoad } from './$types'; import type { Post } from '$lib/types' import { getPosts, transformPostMeta } from '$lib/posts'; +async function importPost(slug: string) { + try { + const post = await import(`$content/post/${slug}.md`); + return post; + } + catch(e) { + console.log("Could not find .md", e); + } + const post = await import(`$content/post/${slug}.typ`); + return post; +} export const load: PageLoad = async ({ params }) => { try { - const post = await import(`$content/post/${params.slug}.md`); + const post = await importPost(params.slug); if (!post) throw error(404); const metadata: Post = transformPostMeta(post.metadata, params.slug); const Content = post.default;