@discord-user-card/markdown
Version:
A markdown parser for Discord
29 lines • 1.26 kB
JavaScript
import { defaultRules, htmlTag, inlineRegex } from "simple-markdown";
import hljs from "highlight.js";
// eslint-disable-next-line regexp/no-super-linear-backtracking, regexp/prefer-w, regexp/no-useless-lazy, regexp/match-any
const codeBlockRegex = /^```(?:([a-z0-9_+\-.#]+?)\n)?\n*([^\n][^]*?)\n*```/i;
export const codeBlock = {
match: inlineRegex(codeBlockRegex),
parse(capture, _parse, state) {
return {
lang: (capture[1] || "").trim(),
content: capture[2] || "",
inQuote: state.inQuote || false,
};
},
order: defaultRules.codeBlock.order,
html(node) {
const unknownLang = () => htmlTag("pre", htmlTag("code", node.content, { class: "hljs duc_scrollbar_ghost_hairline" }));
if (!node.lang || !hljs.getLanguage(node.lang) || typeof node.content !== "string") {
return unknownLang();
}
const result = hljs.highlight(node.content, {
language: node.lang,
ignoreIllegals: true,
});
if (!result)
return unknownLang();
return htmlTag("pre", htmlTag("code", result.value, { class: `hljs duc_scrollbar_ghost_hairline ${result.language}` }));
},
};
//# sourceMappingURL=codeBlock.js.map