From 4855f254192de90d39e235c72d3e8511d5581e96 Mon Sep 17 00:00:00 2001 From: Wolfsblvt Date: Mon, 30 Sep 2024 20:45:39 +0200 Subject: [PATCH] Update /mul, /max and /min definition - Update command definition for /mul, /max and /min to fit the actual code behind, split them too - Add numbersAndVariables enum provider, to centralize --- .../SlashCommandCommonEnumsProvider.js | 29 +++++++++++++++++ public/scripts/variables.js | 32 ++++--------------- 2 files changed, 36 insertions(+), 25 deletions(-) diff --git a/public/scripts/slash-commands/SlashCommandCommonEnumsProvider.js b/public/scripts/slash-commands/SlashCommandCommonEnumsProvider.js index 5612f47b5..a6a589238 100644 --- a/public/scripts/slash-commands/SlashCommandCommonEnumsProvider.js +++ b/public/scripts/slash-commands/SlashCommandCommonEnumsProvider.js @@ -152,6 +152,35 @@ export const commonEnumProviders = { ].filter((item, idx, list)=>idx == list.findIndex(it=>it.value == item.value)); }, + /** + * Enum values for numbers and variable names + * + * Includes all variable names and the ability to specify any number + * + * @param {SlashCommandExecutor} executor - The executor of the slash command + * @param {SlashCommandScope} scope - The scope of the slash command + * @returns {SlashCommandEnumValue[]} The enum values + */ + numbersAndVariables: (executor, scope) => [ + ...commonEnumProviders.variables('all')(executor, scope), + new SlashCommandEnumValue( + 'any variable name', + null, + enumTypes.variable, + enumIcons.variable, + (input) => /^\w*$/.test(input), + (input) => input, + ), + new SlashCommandEnumValue( + 'any number', + null, + enumTypes.number, + enumIcons.number, + (input) => input == '' || !Number.isNaN(Number(input)), + (input) => input, + ), + ], + /** * All possible char entities, like characters and groups. Can be filtered down to just one type. * diff --git a/public/scripts/variables.js b/public/scripts/variables.js index 4e998efae..bb53a487a 100644 --- a/public/scripts/variables.js +++ b/public/scripts/variables.js @@ -1602,28 +1602,7 @@ export function registerVariableCommands() { typeList: [ARGUMENT_TYPE.NUMBER, ARGUMENT_TYPE.VARIABLE_NAME], isRequired: true, acceptsMultiple: true, - enumProvider: (executor, scope) => { - const vars = commonEnumProviders.variables('all')(executor, scope); - vars.push( - new SlashCommandEnumValue( - 'any variable name', - null, - enumTypes.variable, - enumIcons.variable, - (input) => /^\w*$/.test(input), - (input) => input, - ), - new SlashCommandEnumValue( - 'any number', - null, - enumTypes.number, - enumIcons.number, - (input) => input == '' || !Number.isNaN(Number(input)), - (input) => input, - ), - ); - return vars; - }, + enumProvider: commonEnumProviders.numbersAndVariables, forceEnum: false, }), ], @@ -1653,10 +1632,11 @@ export function registerVariableCommands() { typeList: [ARGUMENT_TYPE.NUMBER, ARGUMENT_TYPE.VARIABLE_NAME], isRequired: true, acceptsMultiple: true, - enumProvider: commonEnumProviders.variables('all'), + enumProvider: commonEnumProviders.numbersAndVariables, forceEnum: false, }), ], + splitUnnamedArgument: true, helpString: `
Performs a multiplication of the set of values and passes the result down the pipe. Can use variable names. @@ -1681,10 +1661,11 @@ export function registerVariableCommands() { typeList: [ARGUMENT_TYPE.NUMBER, ARGUMENT_TYPE.VARIABLE_NAME], isRequired: true, acceptsMultiple: true, - enumProvider: commonEnumProviders.variables('all'), + enumProvider: commonEnumProviders.numbersAndVariables, forceEnum: false, }), ], + splitUnnamedArgument: true, helpString: `
Returns the maximum value of the set of values and passes the result down the pipe. Can use variable names. @@ -1709,10 +1690,11 @@ export function registerVariableCommands() { typeList: [ARGUMENT_TYPE.NUMBER, ARGUMENT_TYPE.VARIABLE_NAME], isRequired: true, acceptsMultiple: true, - enumProvider: commonEnumProviders.variables('all'), + enumProvider: commonEnumProviders.numbersAndVariables, forceEnum: false, }), ], + splitUnnamedArgument: true, helpString: `
Returns the minimum value of the set of values and passes the result down the pipe.