website/public/js/code_highlighter.js
2025-02-05 17:32:10 +01:00

44 lines
944 B
JavaScript

const highlight = (map, source) => {
let output = source;
output = output.replace(/("[^"]+")/g, `<span class="string">$1</span>`)
for (let keyword of map.keywords) {
output = output.replaceAll(keyword, `<span class="keyword">${keyword}</span>`)
}
for (let keyword of map.altkeywords) {
output = output.replaceAll(keyword, `<span class="keyword-alt">${keyword}</span>`)
}
// TODO: predicate for function calls to be replaced
// for (let func in map.functions) {
// output = output.replace(func, `<span class="function">${func}</span>`)
// }
output = output.replace(/(\d+)/g, `<span class="number">$1</span>`)
return output;
}
const maps = {
cpp: {
keywords: [
"auto",
"void",
"struct"
],
altkeywords: [
"const",
"static",
"int",
"std::string",
"std::unique_ptr",
"char",
"public",
"private",
"protected"
],
}
};