Add rawQuotes to override with named arg (#4032)

This commit is contained in:
Cohee
2025-05-24 00:35:58 +03:00
committed by GitHub
parent d0bc58acf2
commit 36dfbd4cbe
3 changed files with 45 additions and 3 deletions

View File

@ -266,6 +266,14 @@ export function initDefaultSlashCommands() {
enumList: slashCommandReturnHelper.enumList({ allowObject: true }),
forceEnum: true,
}),
SlashCommandNamedArgument.fromProps({
name: 'raw',
description: 'If true, does not alter quoted literal unnamed arguments',
typeList: [ARGUMENT_TYPE.BOOLEAN],
defaultValue: 'true',
enumProvider: commonEnumProviders.boolean('trueFalse'),
isRequired: false,
}),
],
unnamedArgumentList: [
new SlashCommandArgument(
@ -328,6 +336,14 @@ export function initDefaultSlashCommands() {
enumList: slashCommandReturnHelper.enumList({ allowObject: true }),
forceEnum: true,
}),
SlashCommandNamedArgument.fromProps({
name: 'raw',
description: 'If true, does not alter quoted literal unnamed arguments',
typeList: [ARGUMENT_TYPE.BOOLEAN],
defaultValue: 'true',
enumProvider: commonEnumProviders.boolean('trueFalse'),
isRequired: false,
}),
],
unnamedArgumentList: [
new SlashCommandArgument(
@ -392,6 +408,14 @@ export function initDefaultSlashCommands() {
enumList: slashCommandReturnHelper.enumList({ allowObject: true }),
forceEnum: true,
}),
SlashCommandNamedArgument.fromProps({
name: 'raw',
description: 'If true, does not alter quoted literal unnamed arguments',
typeList: [ARGUMENT_TYPE.BOOLEAN],
defaultValue: 'true',
enumProvider: commonEnumProviders.boolean('trueFalse'),
isRequired: false,
}),
],
unnamedArgumentList: [
new SlashCommandArgument(
@ -617,6 +641,14 @@ export function initDefaultSlashCommands() {
enumList: slashCommandReturnHelper.enumList({ allowObject: true }),
forceEnum: true,
}),
SlashCommandNamedArgument.fromProps({
name: 'raw',
description: 'If true, does not alter quoted literal unnamed arguments',
typeList: [ARGUMENT_TYPE.BOOLEAN],
defaultValue: 'true',
enumProvider: commonEnumProviders.boolean('trueFalse'),
isRequired: false,
}),
],
unnamedArgumentList: [
new SlashCommandArgument(
@ -1013,6 +1045,14 @@ export function initDefaultSlashCommands() {
description: 'a closure to call when the toast is clicked. This executed closure receives scope as provided in the script. Careful about possible side effects when manipulating variables and more.',
typeList: [ARGUMENT_TYPE.CLOSURE],
}),
SlashCommandNamedArgument.fromProps({
name: 'raw',
description: 'If true, does not alter quoted literal unnamed arguments',
typeList: [ARGUMENT_TYPE.BOOLEAN],
defaultValue: 'true',
enumProvider: commonEnumProviders.boolean('trueFalse'),
isRequired: false,
}),
],
unnamedArgumentList: [
new SlashCommandArgument(

View File

@ -266,7 +266,7 @@ export class SlashCommand {
rawQuotes.classList.add('rawQuotes');
rawQuotes.classList.add('fa-solid');
rawQuotes.classList.add('fa-quote-left');
rawQuotes.title = t`Does not alter quoted literal unnamed arguments`;
rawQuotes.title = t`Does not alter quoted literal unnamed arguments. Pass raw=false argument to override.`;
head.append(rawQuotes);
}
}

View File

@ -1,6 +1,6 @@
import { hljs } from '../../lib.js';
import { power_user } from '../power-user.js';
import { isTrueBoolean, uuidv4 } from '../utils.js';
import { isFalseBoolean, isTrueBoolean, uuidv4 } from '../utils.js';
import { SlashCommand } from './SlashCommand.js';
import { ARGUMENT_TYPE, SlashCommandArgument } from './SlashCommandArgument.js';
import { SlashCommandClosure } from './SlashCommandClosure.js';
@ -975,7 +975,9 @@ export class SlashCommandParser {
cmd.startUnnamedArgs = this.index - (/\s(\s*)$/s.exec(this.behind)?.[1]?.length ?? 0);
cmd.endUnnamedArgs = this.index;
if (this.testUnnamedArgument()) {
cmd.unnamedArgumentList = this.parseUnnamedArgument(cmd.command?.unnamedArgumentList?.length && cmd?.command?.splitUnnamedArgument, cmd?.command?.splitUnnamedArgumentCount, cmd?.command?.rawQuotes);
const rawQuotesArg = cmd?.namedArgumentList?.find(a => a.name === 'raw');
const rawQuotes = cmd?.command?.rawQuotes && rawQuotesArg ? !isFalseBoolean(rawQuotesArg?.value?.toString()) : cmd?.command?.rawQuotes;
cmd.unnamedArgumentList = this.parseUnnamedArgument(cmd.command?.unnamedArgumentList?.length && cmd?.command?.splitUnnamedArgument, cmd?.command?.splitUnnamedArgumentCount, rawQuotes);
cmd.endUnnamedArgs = this.index;
if (cmd.name == 'let') {
const keyArg = cmd.namedArgumentList.find(it=>it.name == 'key');