hljs stscript lang

This commit is contained in:
LenAnderson
2024-04-25 15:44:48 -04:00
parent 613ab6834e
commit 3ff367a221

View File

@ -178,35 +178,105 @@ export class SlashCommandParser {
relevance: 0, relevance: 0,
}; };
const COMMENT = {
scope: 'comment',
begin: /\/[/#]/,
end: /\||$|:}/,
contains: [],
};
const LET = {
begin: [
/\/(let|var)\s+/,
],
beginScope: {
1: 'variable',
},
end: /\||$|:}/,
contains: [],
};
const SETVAR = {
begin: /\/(setvar|setglobalvar)\s+/,
beginScope: 'variable',
end: /\||$|:}/,
excludeEnd: true,
contains: [],
};
const GETVAR = {
begin: /\/(getvar|getglobalvar)\s+/,
beginScope: 'variable',
end: /\||$|:}/,
excludeEnd: true,
contains: [],
};
const RUN = {
match: [
/\/:/,
/(".+?(?<!\\)") |(\S+?) /,
],
className: {
1: 'variable.language',
2: 'title.function.invoke',
},
contains: [], // defined later
};
const COMMAND = { const COMMAND = {
scope: 'command', scope: 'command',
begin: /\/\S+/, begin: /\/\S+/,
beginScope: 'title.function', beginScope: 'title.function',
end: /\||$|:}/, end: /\||$|(?=:})/,
excludeEnd: true,
contains: [], // defined later contains: [], // defined later
}; };
const CLOSURE = { const CLOSURE = {
scope: 'closure', scope: 'closure',
begin: /{:/, begin: /{:/,
end: /:}/, end: /:}(\(\))?/,
beginScope: 'punctuation',
endScope: 'punctuation',
contains: [], // defined later contains: [], // defined later
}; };
const CLOSURE_ARGS = {
scope: 'params',
begin: /:}\(/,
end: /\)/,
contains: [],
};
const NAMED_ARG = { const NAMED_ARG = {
scope: 'type', scope: 'property',
begin: /\w+=/, begin: /\w+=/,
end: '', end: '',
}; };
const MACRO = { const MACRO = {
scope: 'operator', scope: 'variable',
begin: /{{/, begin: /{{/,
end: /}}/, end: /}}/,
}; };
RUN.contains.push(
hljs.BACKSLASH_ESCAPE,
NAMED_ARG,
hljs.QUOTE_STRING_MODE,
NUMBER,
MACRO,
CLOSURE,
);
LET.contains.push(
hljs.BACKSLASH_ESCAPE,
NAMED_ARG,
hljs.QUOTE_STRING_MODE,
NUMBER,
MACRO,
CLOSURE,
);
SETVAR.contains.push(
hljs.BACKSLASH_ESCAPE,
NAMED_ARG,
hljs.QUOTE_STRING_MODE,
NUMBER,
MACRO,
CLOSURE,
);
GETVAR.contains.push(
hljs.BACKSLASH_ESCAPE,
NAMED_ARG,
hljs.QUOTE_STRING_MODE,
NUMBER,
MACRO,
CLOSURE,
);
COMMAND.contains.push( COMMAND.contains.push(
hljs.BACKSLASH_ESCAPE, hljs.BACKSLASH_ESCAPE,
NAMED_ARG, NAMED_ARG,
@ -214,35 +284,33 @@ export class SlashCommandParser {
NUMBER, NUMBER,
MACRO, MACRO,
CLOSURE, CLOSURE,
CLOSURE_ARGS,
); );
CLOSURE.contains.push( CLOSURE.contains.push(
hljs.BACKSLASH_ESCAPE, hljs.BACKSLASH_ESCAPE,
COMMENT,
NAMED_ARG, NAMED_ARG,
hljs.QUOTE_STRING_MODE, hljs.QUOTE_STRING_MODE,
NUMBER, NUMBER,
MACRO, MACRO,
RUN,
LET,
GETVAR,
SETVAR,
COMMAND, COMMAND,
'self', 'self',
CLOSURE_ARGS,
);
CLOSURE_ARGS.contains.push(
hljs.BACKSLASH_ESCAPE,
NAMED_ARG,
hljs.QUOTE_STRING_MODE,
NUMBER,
MACRO,
CLOSURE,
'self',
); );
hljs.registerLanguage('stscript', ()=>({ hljs.registerLanguage('stscript', ()=>({
case_insensitive: false, case_insensitive: false,
keywords: ['|'], keywords: ['|'],
contains: [ contains: [
hljs.BACKSLASH_ESCAPE, hljs.BACKSLASH_ESCAPE,
COMMENT,
RUN,
LET,
GETVAR,
SETVAR,
COMMAND, COMMAND,
CLOSURE, CLOSURE,
CLOSURE_ARGS,
], ],
})); }));
} }