in src/pr/logs.js [51:114]
export function registerLogLanguage(monaco, groupRanges) {
// Register a new language
monaco.languages.register({ id: "logText" });
// Register a tokens provider for the language
monaco.languages.setMonarchTokensProvider("logText", {
tokenizer: {
root: [
[/\[30;1m.*?\[0m/, "black"],
[/\[31;1m.*?\[0m/, "red"],
[/\[32;1m.*?\[0m/, "green"],
[/\[33;1m.*?\[0m/, "yellow"],
[/\[34;1m.*?\[0m/, "blue"],
[/\[35;1m.*?\[0m/, "magenta"],
[/\[36;1m.*?\[0m/, "cyan"],
[/\[37;1m.*?\[0m/, "white"],
[/\[30m.*?\[0m/, "black"],
[/\[31m.*?\[0m/, "red"],
[/\[32m.*?\[0m/, "green"],
[/\[33m.*?\[0m/, "yellow"],
[/\[34m.*?\[0m/, "blue"],
[/\[35m.*?\[0m/, "magenta"],
[/\[36m.*?\[0m/, "cyan"],
[/\[37m.*?\[0m/, "white"],
[/\[0;1;30m.*?\[0m/, "black"],
[/\[0;1;31m.*?\[0m/, "red"],
[/\[0;1;32m.*?\[0m/, "green"],
[/\[0;1;33m.*?\[0m/, "yellow"],
[/\[0;1;34m.*?\[0m/, "blue"],
[/\[0;1;35m.*?\[0m/, "magenta"],
[/\[0;1;36m.*?\[0m/, "cyan"],
[/\[0;1;37m.*?\[0m/, "white"],
[/\[1m.*?\[0m/, "cyan"],
[/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{7}Z/, "hidden"],
],
},
});
// Define a new theme that contains only rules that match this language
monaco.editor.defineTheme("logTheme", {
base: "vs-dark",
inherit: true,
rules: [
{ token: "black", foreground: "000000", fontStyle: "bold" },
{ token: "red", foreground: "af0000", fontStyle: "bold" },
{ token: "green", foreground: "87d700", fontStyle: "bold" },
{ token: "yellow", foreground: "d7d700", fontStyle: "bold" },
{ token: "blue", foreground: "5fd7ff", fontStyle: "bold" },
{ token: "magenta", foreground: "8700af", fontStyle: "bold" },
{ token: "cyan", foreground: "00af87", fontStyle: "bold" },
{ token: "white", foreground: "ffffff", fontStyle: "bold" },
{ token: "hidden", foreground: "5f5f5f" },
],
});
monaco.languages.registerFoldingRangeProvider("logText", {
provideFoldingRanges: function (model, context, token) {
return groupRanges;
},
});
}