Macros 2.0 (v0.6.6) - STscript compatibility (#4957)

* Bypass REPLACE_GETVAR with experimental parser enabled

* (wip) macro-2.0 replacer in STscript parser

* Add support for MacroDefinitionOptions format in dynamic macros

- Add DynamicMacroValue typedef supporting string, function, or MacroDefinitionOptions object
- Extract macro definition building logic into MacroRegistry.buildMacroDefFromOptions() method
- Update MacroEngine to detect and handle three dynamic macro formats:
  1. string - direct value, no args allowed
  2. function - handler function, no args allowed (legacy)
  3. MacroDefinitionOptions object - full definition with handler, args, type

* Implement dynamic macro replacers

* Remove global typedef

* Use unique closure boundary

* Add e2e tests for MacroSlashCommands

* Update public/scripts/macros/engine/MacroEngine.js

Co-authored-by: Wolfsblvt <wolfsblvt@gmail.com>

* Use strict args array match

* Update public/scripts/macros/engine/MacroEngine.js

---------

Co-authored-by: Wolfsblvt <wolfsblvt@gmail.com>
This commit is contained in:
Cohee
2026-01-06 00:57:03 +02:00
committed by GitHub
parent 293ee0a310
commit 7331dba056
10 changed files with 1241 additions and 273 deletions
+1 -1
View File
@@ -2839,7 +2839,7 @@ export function substituteParamsLegacy(content, _name1, _name2, _original, _grou
* @param {string} [options.original] - The original message for {{original}} substitution.
* @param {string} [options.groupOverride] - The group members list for {{group}} substitution.
* @param {boolean} [options.replaceCharacterCard=true] - Whether to replace character card macros.
* @param {Record<string,string|MacroHandler>} [options.dynamicMacros={}] - Additional environment variables as dynamic macros for substitution. Registered as macro functions.
* @param {Record<string, import('./scripts/macros/engine/MacroEnv.types.js').DynamicMacroValue>} [options.dynamicMacros={}] - Additional environment variables as dynamic macros for substitution. Registered as macro functions.
* @param {(x: string) => string} [options.postProcessFn=(x) => x] - Post-processing function for each substituted macro.
* @returns {string} The string with substituted parameters.
*/