| 123456789101112131415161718192021222324252627282930 |
- import prism from 'prismjs'
- import loadLanguages from 'prismjs/components/index'
- function transformAlias(lang: string) {
- const map = {
- python3: 'python'
- } as { [key: string]: string }
- return map[lang] || lang
- }
- export default function highlight(str: string, lang: string) {
- if (lang) {
- const langCode = transformAlias(lang)
- if (!prism.languages[langCode]) {
- try {
- loadLanguages([langCode])
- } catch (e) {
- // eslint-disable-next-line no-console
- console.error(`lang ${langCode} is not supported by prism`)
- }
- }
- if (prism.languages[langCode]) {
- const code = prism.highlight(str, prism.languages[langCode], langCode)
- return `<pre class="language-${langCode}"><code>${code}</code></pre>`
- }
- }
- return `<pre class="language-text"><code>${str}</code></pre>` // use external default escaping
- }
|