"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