personal-site/assets/markdown_conf.ts

72 lines
2.3 KiB
TypeScript
Raw Normal View History

2024-12-22 13:21:05 -08:00
import hljs from "highlight.js";
import MarkdownIt from "markdown-it";
import Token from "markdown-it/lib/token.mjs";
2025-01-01 11:13:16 -08:00
import { alert } from "@mdit/plugin-alert";
import { figure } from "@mdit/plugin-figure";
import TeXToSVG from "tex-to-svg";
import { tab } from "@mdit/plugin-tab";
import { tasklist } from "@mdit/plugin-tasklist";
import { mark } from "@mdit/plugin-mark";
import { footnote } from "@mdit/plugin-footnote";
import { align } from "@mdit/plugin-align";
2024-12-22 12:22:47 -08:00
export default function configured_markdown(): MarkdownIt {
2025-01-01 11:13:16 -08:00
var md: MarkdownIt = MarkdownIt({
2024-12-22 12:22:47 -08:00
breaks: true,
typographer: true,
html: true,
highlight: function (str, lang) {
if (lang && hljs.getLanguage(lang)) {
try {
return '<pre><code class="hljs">' +
2024-12-22 13:21:05 -08:00
hljs.highlight(str, {
language: lang,
ignoreIllegals: true,
}).value +
"</code></pre>";
} catch (__) {}
2024-12-22 12:22:47 -08:00
}
2024-12-22 13:21:05 -08:00
return '<pre><code class="hljs">' + md.utils.escapeHtml(str) +
"</code></pre>";
},
});
2025-01-01 11:13:16 -08:00
2025-01-01 14:17:16 -08:00
md = md
2025-01-01 11:13:16 -08:00
.use(tasklist)
.use(mark)
.use(footnote)
.use(alert, {
alertNames: [
"note", "info", "warning", "danger", "todo", "tip",
"important", "success", "caution", "question", "done",
"quote", "deprecated", "example"
],
2025-01-01 14:17:16 -08:00
}).use(tab, {
name: "tabs"
2025-01-01 11:13:16 -08:00
});
2024-12-22 13:21:05 -08:00
2025-01-01 00:26:10 -08:00
md.renderer.rules.text = function (tokens, idx, options, env, self) {
// headers 1-3 get an <hr> after them - With a class (md-hr-N) for styling
if (tokens[idx].type === "heading_open") {
const level = tokens[idx].tag;
return `<${level} class="md-hr-${level}">${tokens[idx + 1].content}</${level}>`;
}
return self.renderToken(tokens, idx, options);
}
2024-12-22 13:21:05 -08:00
2024-12-22 12:22:47 -08:00
md.renderer.rules.softbreak = function (tokens, idx, options, env, self) {
2024-12-22 13:21:05 -08:00
return "<br>";
};
2024-12-22 12:22:47 -08:00
md.renderer.rules.hardbreak = function (tokens, idx, options, env, self) {
2024-12-22 13:21:05 -08:00
return "<br><br>";
};
md.renderer.rules.text = function (tokens, idx, options, env, self) {
return tokens[idx].content;
2024-12-22 12:22:47 -08:00
}
return md;
2024-12-22 13:21:05 -08:00
}