wip: improve spec parsing

This commit is contained in:
2026-01-10 21:52:45 +00:00
parent f1fa264ed7
commit 208219ca2c
10 changed files with 324 additions and 255 deletions

View File

@@ -2,10 +2,6 @@
import { getCollection } from "astro:content";
import * as fs from "node:fs";
import * as path from "node:path";
import { unified } from "unified";
import remarkParse from "remark-parse";
import remarkRehype from "remark-rehype";
import rehypeStringify from "rehype-stringify";
import SinglePage from "../layouts/SinglePage.astro";
import Header from "../components/Header.astro";
@@ -25,28 +21,15 @@ if (!spec) {
throw new Error(`Spec version ${version} not found`);
}
// Read and process the markdown file
const filePath = path.join(
process.cwd(),
"src/content/spec",
`${version}.md`
);
// Read the markdown file
const filePath = path.join(process.cwd(), "src/content/spec", `${version}.md`);
const content = fs.readFileSync(filePath, "utf-8");
// Remove frontmatter
const body = content.replace(/^---[\s\S]*?---\n/, "");
const markdown = content.replace(/^---[\s\S]*?---\n/, "");
// Process markdown to HTML
const result = await unified()
.use(remarkParse)
.use(remarkRehype, { allowDangerousHtml: true })
.use(rehypeStringify, { allowDangerousHtml: true })
.process(body);
const html = String(result);
// Parse the content into sections
const parsed = parseSpecContent(html, version);
// Parse the content into sections (handles markdown -> HTML internally)
const parsed = await parseSpecContent(markdown, version);
---
<SinglePage title={spec.data.title} version={version}>
@@ -64,6 +47,7 @@ const parsed = parseSpecContent(html, version);
<SpecSection
terminology={parsed.terminology}
terminologyTitle={parsed.terminologyTitle}
specification={parsed.specification}
tocItems={parsed.tocItems}
/>