javascript - 如何在我的 Highlight.js 中添加更多语言
问题描述
根据代码示例,如何添加新语言,如 c#、php、java、sql 等。此示例由上个月回答我问题的人提供。我尝试添加新语言但无法正常工作。谢谢。
const container = document.querySelector('.container');
const removeTextNodes = el =>
[...el.childNodes].forEach(child => child.nodeType !== 1 && el.removeChild(child))
const format = (text, language) => {
switch (language) {
case 'html': return html_beautify(text);
case 'css': return css_beautify(text);
case 'js': return js_beautify(text);
default: return text;
}
}
const preProcess = code => {
removeTextNodes(code.closest('pre'));
const language = [...code.classList].find(cls => /language-/.test(cls));
const [ match, lang ] = language?.match(/language-(\w+)/);
const content = code.innerHTML.trim();
code.innerHTML = format(lang === 'html' ? _.escape(content) : content, lang);
};
const insertCode = (e) => {
e.preventDefault();
const content = e.target.elements.content.value.trim();
const language = e.target.elements.language.value;
if (content) {
const formatted = format(content, language);
const pre = document.createElement('pre');
const code = document.createElement('code');
code.classList.add(`language-${language}`, 'hljs');
code.innerHTML = hljs.highlight(formatted, { language }).value;
pre.append(code);
container.prepend(pre);
}
}
document.forms['add'].addEventListener('submit', insertCode);
document.querySelectorAll('code[class^="language-"]').forEach(preProcess);
hljs.highlightAll();
解决方案
推荐阅读
- c++ - Convert function pointer to std::uintptr_t at compile time
- python - 如何扩展一个类,仅当它存在时
- python - 我如何为管道脚本引用 python 包?
- android - 无法编译“未解决的参考:协程”
- matlab - 将多个 CSV 文件中的列重新组织成一组新文件
- superset - 设置仪表板的权限
- python - Python:Numpy 百分位数令人困惑的结果
- python-3.x - 无法使用 anaconda 使用 yml 创建环境
- pyspark - 如何在pyspark中动态聚合列
- python - name, *line = input().split() 如何在 python 3 中工作?