mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-08 17:37:24 +08:00
48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.highlight = void 0;
|
|
const chalk = require('chalk');
|
|
const prism = require('prismjs');
|
|
const loadLanguages = require('prismjs/components/index');
|
|
const escapeHtml = require('escape-html');
|
|
// required to make embedded highlighting work...
|
|
loadLanguages(['markup', 'css', 'javascript']);
|
|
function wrap(code, lang) {
|
|
if (lang === 'text') {
|
|
code = escapeHtml(code);
|
|
}
|
|
return `<pre v-pre><code>${code}</code></pre>`;
|
|
}
|
|
exports.highlight = (str, lang) => {
|
|
if (!lang) {
|
|
return wrap(str, 'text');
|
|
}
|
|
lang = lang.toLowerCase();
|
|
const rawLang = lang;
|
|
if (lang === 'vue' || lang === 'html') {
|
|
lang = 'markup';
|
|
}
|
|
if (lang === 'md') {
|
|
lang = 'markdown';
|
|
}
|
|
if (lang === 'ts') {
|
|
lang = 'typescript';
|
|
}
|
|
if (lang === 'py') {
|
|
lang = 'python';
|
|
}
|
|
if (!prism.languages[lang]) {
|
|
try {
|
|
loadLanguages([lang]);
|
|
}
|
|
catch (e) {
|
|
console.warn(chalk.yellow(`[vuepress] Syntax highlight for language "${lang}" is not supported.`));
|
|
}
|
|
}
|
|
if (prism.languages[lang]) {
|
|
const code = prism.highlight(str, prism.languages[lang], lang);
|
|
return wrap(code, rawLang);
|
|
}
|
|
return wrap(str, 'text');
|
|
};
|
|
//# sourceMappingURL=highlight.js.map
|