Merge 0dfebbbe52
into 0791f5bbae
This commit is contained in:
commit
f93e7d89d4
|
@ -1040,9 +1040,9 @@ export class SlashCommandParser {
|
||||||
/**@type {SlashCommandUnnamedArgumentAssignment}*/
|
/**@type {SlashCommandUnnamedArgumentAssignment}*/
|
||||||
let assignment = new SlashCommandUnnamedArgumentAssignment();
|
let assignment = new SlashCommandUnnamedArgumentAssignment();
|
||||||
assignment.start = this.index;
|
assignment.start = this.index;
|
||||||
if (!split && this.testQuotedValue()) {
|
if (!split && this.testEscapedQuotedValue()) {
|
||||||
// if the next bit is a quoted value, take the whole value and gather contents as a list
|
// if the next bit is a quoted value, take the whole value and gather contents as a list
|
||||||
assignment.value = this.parseQuotedValue();
|
assignment.value = this.parseEscapedQuotedValue();
|
||||||
assignment.end = this.index;
|
assignment.end = this.index;
|
||||||
isList = true;
|
isList = true;
|
||||||
listValues.push(assignment);
|
listValues.push(assignment);
|
||||||
|
@ -1054,9 +1054,9 @@ export class SlashCommandParser {
|
||||||
if (split && splitCount && listValues.length >= splitCount) {
|
if (split && splitCount && listValues.length >= splitCount) {
|
||||||
// the split count has just been reached: stop splitting, the rest is one singular value
|
// the split count has just been reached: stop splitting, the rest is one singular value
|
||||||
split = false;
|
split = false;
|
||||||
if (this.testQuotedValue()) {
|
if (this.testEscapedQuotedValue()) {
|
||||||
// if the next bit is a quoted value, take the whole value
|
// if the next bit is a quoted value, take the whole value
|
||||||
assignment.value = this.parseQuotedValue();
|
assignment.value = this.parseEscapedQuotedValue();
|
||||||
assignment.end = this.index;
|
assignment.end = this.index;
|
||||||
listValues.push(assignment);
|
listValues.push(assignment);
|
||||||
listQuoted.push(true);
|
listQuoted.push(true);
|
||||||
|
@ -1073,9 +1073,9 @@ export class SlashCommandParser {
|
||||||
listQuoted.push(false);
|
listQuoted.push(false);
|
||||||
assignment = new SlashCommandUnnamedArgumentAssignment();
|
assignment = new SlashCommandUnnamedArgumentAssignment();
|
||||||
assignment.start = this.index;
|
assignment.start = this.index;
|
||||||
if (!split && this.testQuotedValue()) {
|
if (!split && this.testEscapedQuotedValue()) {
|
||||||
// if where currently not splitting and the next bit is a quoted value, take the whole value
|
// if where currently not splitting and the next bit is a quoted value, take the whole value
|
||||||
assignment.value = this.parseQuotedValue();
|
assignment.value = this.parseEscapedQuotedValue();
|
||||||
assignment.end = this.index;
|
assignment.end = this.index;
|
||||||
listValues.push(assignment);
|
listValues.push(assignment);
|
||||||
listQuoted.push(true);
|
listQuoted.push(true);
|
||||||
|
@ -1093,9 +1093,9 @@ export class SlashCommandParser {
|
||||||
assignment.start = this.index;
|
assignment.start = this.index;
|
||||||
if (split) this.discardWhitespace();
|
if (split) this.discardWhitespace();
|
||||||
} else if (split) {
|
} else if (split) {
|
||||||
if (this.testQuotedValue()) {
|
if (this.testEscapedQuotedValue()) {
|
||||||
assignment.start = this.index;
|
assignment.start = this.index;
|
||||||
assignment.value = this.parseQuotedValue();
|
assignment.value = this.parseEscapedQuotedValue();
|
||||||
assignment.end = this.index;
|
assignment.end = this.index;
|
||||||
listValues.push(assignment);
|
listValues.push(assignment);
|
||||||
listQuoted.push(true);
|
listQuoted.push(true);
|
||||||
|
@ -1182,6 +1182,9 @@ export class SlashCommandParser {
|
||||||
testQuotedValue() {
|
testQuotedValue() {
|
||||||
return this.testSymbol('"');
|
return this.testSymbol('"');
|
||||||
}
|
}
|
||||||
|
testEscapedQuotedValue() {
|
||||||
|
return this.testSymbol('="');
|
||||||
|
}
|
||||||
testQuotedValueEnd() {
|
testQuotedValueEnd() {
|
||||||
if (this.endOfText) {
|
if (this.endOfText) {
|
||||||
if (this.verifyCommandNames) throw new SlashCommandParserError(`Unexpected end of quoted value at position ${this.index}`, this.text, this.index);
|
if (this.verifyCommandNames) throw new SlashCommandParserError(`Unexpected end of quoted value at position ${this.index}`, this.text, this.index);
|
||||||
|
@ -1193,6 +1196,10 @@ export class SlashCommandParser {
|
||||||
}
|
}
|
||||||
return this.testSymbol('"') || (!this.flags[PARSER_FLAG.STRICT_ESCAPING] && this.testCommandEnd());
|
return this.testSymbol('"') || (!this.flags[PARSER_FLAG.STRICT_ESCAPING] && this.testCommandEnd());
|
||||||
}
|
}
|
||||||
|
parseEscapedQuotedValue() {
|
||||||
|
this.take();
|
||||||
|
return this.parseQuotedValue();
|
||||||
|
}
|
||||||
parseQuotedValue() {
|
parseQuotedValue() {
|
||||||
this.take(); // discard opening quote
|
this.take(); // discard opening quote
|
||||||
let value = '';
|
let value = '';
|
||||||
|
|
Loading…
Reference in New Issue