personal-site/assets/markdown_conf.ts

46 lines
1.4 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";
2024-12-22 12:22:47 -08:00
export default function configured_markdown(): MarkdownIt {
const md: MarkdownIt = MarkdownIt({
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>";
},
});
md.renderer.rules.h6 = function (tokens, idx, options, env, self) {
return '<h6 class="text-lg font-semibold my-3"><br>' +
tokens[idx].content + "</h6>";
};
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
}