@wonderwhy-er/desktop-commander
Version:
MCP server for terminal operations and file editing
55 lines (54 loc) • 2.27 kB
JavaScript
/**
* Syntax highlighting integration layer around highlight.js. It registers supported languages and provides safe helpers for highlighted or plain escaped output.
*/
import { escapeHtml as sharedEscapeHtml } from '../../../shared/escape-html.js';
import hljs from 'highlight.js/lib/core';
import bash from 'highlight.js/lib/languages/bash';
import css from 'highlight.js/lib/languages/css';
import go from 'highlight.js/lib/languages/go';
import java from 'highlight.js/lib/languages/java';
import javascript from 'highlight.js/lib/languages/javascript';
import json from 'highlight.js/lib/languages/json';
import markdown from 'highlight.js/lib/languages/markdown';
import python from 'highlight.js/lib/languages/python';
import ruby from 'highlight.js/lib/languages/ruby';
import rust from 'highlight.js/lib/languages/rust';
import sql from 'highlight.js/lib/languages/sql';
import typescript from 'highlight.js/lib/languages/typescript';
import xml from 'highlight.js/lib/languages/xml';
import yaml from 'highlight.js/lib/languages/yaml';
hljs.registerLanguage('bash', bash);
hljs.registerLanguage('css', css);
hljs.registerLanguage('go', go);
hljs.registerLanguage('java', java);
hljs.registerLanguage('javascript', javascript);
hljs.registerLanguage('json', json);
hljs.registerLanguage('markdown', markdown);
hljs.registerLanguage('python', python);
hljs.registerLanguage('ruby', ruby);
hljs.registerLanguage('rust', rust);
hljs.registerLanguage('sql', sql);
hljs.registerLanguage('typescript', typescript);
hljs.registerLanguage('xml', xml);
hljs.registerLanguage('html', xml);
hljs.registerLanguage('yaml', yaml);
hljs.registerLanguage('toml', yaml);
hljs.registerLanguage('ini', yaml);
export function escapeHtml(input) {
return sharedEscapeHtml(input);
}
export function highlightSource(code, language) {
const normalizedLanguage = (language || '').toLowerCase();
if (!normalizedLanguage || normalizedLanguage === 'text') {
return escapeHtml(code);
}
try {
if (hljs.getLanguage(normalizedLanguage)) {
return hljs.highlight(code, { language: normalizedLanguage, ignoreIllegals: true }).value;
}
return hljs.highlightAuto(code).value;
}
catch {
return escapeHtml(code);
}
}