Files
memos/web/src/labs/marked/parser/CodeBlock.ts
boojack eefd0444c8 feat: add highlight for code block (#291)
* feat: add highlight for code block

* chore: update test
2022-10-14 22:29:28 +08:00

25 lines
610 B
TypeScript

import { escape } from "lodash-es";
import hljs from "highlight.js";
export const CODE_BLOCK_REG = /^```(\S*?)\s([\s\S]*?)```(\n?)/;
const renderer = (rawStr: string): string => {
const matchResult = rawStr.match(CODE_BLOCK_REG);
if (!matchResult) {
return rawStr;
}
const language = escape(matchResult[1]) || "plaintext";
const highlightedCodes = hljs.highlight(matchResult[2], {
language,
}).value;
return `<pre><code class="language-${language}">${highlightedCodes}</code></pre>${matchResult[3]}`;
};
export default {
name: "code block",
regex: CODE_BLOCK_REG,
renderer,
};