From 8b866ea69109e2ef4bceb76572d2faf8a4fa3af9 Mon Sep 17 00:00:00 2001 From: Dolphin2Point1 Date: Sat, 20 Feb 2021 12:58:56 -0600 Subject: [PATCH 1/3] escape strings and make splitArgs easier to modify in the future --- .../me/shedaniel/linkie/discord/CommandMap.kt | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt b/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt index f31d5a0..af0a281 100644 --- a/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt +++ b/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt @@ -59,14 +59,26 @@ class CommandMap(private val commandAcceptor: CommandAcceptor, private val defau private fun String.splitArgs(): List { val args = mutableListOf() val stringBuilder = StringBuilder() + var whitespaceEscaped = false + var characterEscaped = false forEach { val whitespace = it.isWhitespace() - if (whitespace) { + if (whitespace && !whitespaceEscaped) { args.add(stringBuilder.toString()) stringBuilder.clear() - } - if (it == '\n' || !whitespace) { + if(it == '\n') { + stringBuilder.append(it) + characterEscaped = false + } + } else if(!characterEscaped) { + if(it == '"') { + whitespaceEscaped = !whitespaceEscaped + } else if(it == '\\') { + characterEscaped = true + } + } else { stringBuilder.append(it) + characterEscaped = false } } if (stringBuilder.isNotEmpty()) From 9df2da3f381d192542510743395c208d0d20d38a Mon Sep 17 00:00:00 2001 From: Dolphin2Point1 Date: Sat, 20 Feb 2021 13:00:49 -0600 Subject: [PATCH 2/3] add space to match other code --- src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt b/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt index af0a281..fdcee90 100644 --- a/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt +++ b/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt @@ -70,7 +70,7 @@ class CommandMap(private val commandAcceptor: CommandAcceptor, private val defau stringBuilder.append(it) characterEscaped = false } - } else if(!characterEscaped) { + } else if (!characterEscaped) { if(it == '"') { whitespaceEscaped = !whitespaceEscaped } else if(it == '\\') { From 19b10dbf964500e330595fd85e5f3cf3c8bf722e Mon Sep 17 00:00:00 2001 From: Dolphin2Point1 Date: Sat, 20 Feb 2021 13:05:15 -0600 Subject: [PATCH 3/3] move it around a bit --- .../kotlin/me/shedaniel/linkie/discord/CommandMap.kt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt b/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt index fdcee90..549598e 100644 --- a/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt +++ b/src/main/kotlin/me/shedaniel/linkie/discord/CommandMap.kt @@ -70,12 +70,10 @@ class CommandMap(private val commandAcceptor: CommandAcceptor, private val defau stringBuilder.append(it) characterEscaped = false } - } else if (!characterEscaped) { - if(it == '"') { - whitespaceEscaped = !whitespaceEscaped - } else if(it == '\\') { - characterEscaped = true - } + } else if (!characterEscaped && it == '"') { + whitespaceEscaped = !whitespaceEscaped + } else if (!characterEscaped && it == '\\') { + characterEscaped = true } else { stringBuilder.append(it) characterEscaped = false