25 lines
728 B
TypeScript
25 lines
728 B
TypeScript
|
import { renderToText, replaceNodesMatching } from "../../common/tree";
|
||
|
import { parseMarkdown } from "plugos-silverbullet-syscall/markdown";
|
||
|
|
||
|
export function encodePageUrl(name: string): string {
|
||
|
return name.replaceAll(" ", "_");
|
||
|
}
|
||
|
|
||
|
export async function cleanMarkdown(text: string): Promise<string> {
|
||
|
let mdTree = await parseMarkdown(text);
|
||
|
replaceNodesMatching(mdTree, (n) => {
|
||
|
if (n.type === "WikiLink") {
|
||
|
const page = n.children![1].children![0].text!;
|
||
|
return {
|
||
|
// HACK
|
||
|
text: `[${page}](/${encodePageUrl(page)})`,
|
||
|
};
|
||
|
}
|
||
|
// Simply get rid of these
|
||
|
if (n.type === "CommentBlock" || n.type === "Comment") {
|
||
|
return null;
|
||
|
}
|
||
|
});
|
||
|
return renderToText(mdTree);
|
||
|
}
|