From e312f500566673d120395db67c7f8a89ab0a8eb5 Mon Sep 17 00:00:00 2001 From: Matthew Cech Date: Mon, 15 Apr 2019 22:49:12 -0700 Subject: [PATCH 1/3] gitflow-hotfix-stash: newline_parse --- src/dataStructures/TaggedPairStore.java | 2 +- src/main/Main.java | 2 +- src/utils/StringUtils.java | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 src/utils/StringUtils.java diff --git a/src/dataStructures/TaggedPairStore.java b/src/dataStructures/TaggedPairStore.java index 25b6a87..d38fe8e 100644 --- a/src/dataStructures/TaggedPairStore.java +++ b/src/dataStructures/TaggedPairStore.java @@ -12,7 +12,7 @@ import java.util.function.Consumer; // // [ExampleSection] // Key=Value -// Valid Ridiculous Key&\n\t_.:;foo = \tValid Ridiculous Value*&%$()^.[]{}@ +// Valid Ridiculous Key&\n\t_.:;foo = \tValid Ridiculous Value*&%$()^.[]{}@ // EmptyValue= // // Note that the sections are NOT designed to allow for duplicate keys across them. diff --git a/src/main/Main.java b/src/main/Main.java index 2b7bc6a..1ca3707 100644 --- a/src/main/Main.java +++ b/src/main/Main.java @@ -42,7 +42,7 @@ public class Main extends ListenerAdapter // Bot startup kitty = new JDABuilder(AccountType.BOT).setToken(Ref.TestToken).buildBlocking(); - kitty.getPresence().setGame(Game.playing("with a new build")); + kitty.getPresence().setGame(Game.playing("with digital yarn")); kitty.addEventListener(new Main()); } diff --git a/src/utils/StringUtils.java b/src/utils/StringUtils.java new file mode 100644 index 0000000..7f2fef5 --- /dev/null +++ b/src/utils/StringUtils.java @@ -0,0 +1,17 @@ +package utils; + +public class StringUtils +{ + public static String UnEscape(String str) + { + str = str.replaceAll("\\\\b", "\b"); + str = str.replaceAll("\\\\n", "\n"); + str = str.replaceAll("\\\\t", "\t"); + str = str.replaceAll("\\\\r", "\r"); + str = str.replaceAll("\\\\f", "\f"); + str = str.replaceAll("\\\\\"", "\""); + str = str.replaceAll("\\\\\\\\", "\\"); + + return str; + } +} From 91e941e69a217a85a9b1cc5fba64bbc83c5821bc Mon Sep 17 00:00:00 2001 From: Matthew Cech Date: Mon, 15 Apr 2019 23:31:33 -0700 Subject: [PATCH 2/3] = Iterated --- src/dataStructures/TaggedPairStore.java | 19 +++++++++++++++++++ src/utils/StringUtils.java | 14 +++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/dataStructures/TaggedPairStore.java b/src/dataStructures/TaggedPairStore.java index d38fe8e..944c8bd 100644 --- a/src/dataStructures/TaggedPairStore.java +++ b/src/dataStructures/TaggedPairStore.java @@ -6,6 +6,8 @@ import java.util.Map; import java.util.function.BiConsumer; import java.util.function.Consumer; +import utils.StringUtils; + // This is a class designed to parse ini inspired key-value pairs that are sectioned off. // The difference here is that this is more permissive than an ini file, and only accepts // a single split character, not the traditional set an ini does. All of the following are valid: @@ -91,6 +93,20 @@ public class TaggedPairStore Map.Entry internalPair = (Map.Entry)internal.next(); String key = (String)internalPair.getKey(); String value = (String)internalPair.getValue(); + key = StringUtils.ReEscape(key); + value = StringUtils.ReEscape(value); + + if(key.endsWith("\\r")) + { + if(!key.endsWith("\\r\\r")) + key.substring(0, key.length() - 2); + } + + if(value.endsWith("\\r")) + { + if(!value.endsWith("\\r\\r")) + value.substring(0, value.length() - 2); + } if(key == value) out += (key + PairSplit) + PairLineSeparator; @@ -144,6 +160,9 @@ public class TaggedPairStore String key = line.substring(0, splitPos); String value = line.substring(splitPos + PairSplit.length()); + key = StringUtils.UnEscape(key); + value = StringUtils.UnEscape(value); + taggedPairs.get(sectionName).putIfAbsent(key, value); allPairs.putIfAbsent(key, value); } diff --git a/src/utils/StringUtils.java b/src/utils/StringUtils.java index 7f2fef5..026b46d 100644 --- a/src/utils/StringUtils.java +++ b/src/utils/StringUtils.java @@ -10,8 +10,20 @@ public class StringUtils str = str.replaceAll("\\\\r", "\r"); str = str.replaceAll("\\\\f", "\f"); str = str.replaceAll("\\\\\"", "\""); - str = str.replaceAll("\\\\\\\\", "\\"); + str = str.replaceAll("\\\\\\\\\\\\", "\\\\"); return str; } + + public static String ReEscape(String str) + { + str = str.replaceAll("\\\b", "\\\\\\b"); + str = str.replaceAll("\\\n", "\\\\\\n"); + str = str.replaceAll("\\\t", "\\\\\\t"); + str = str.replaceAll("\\\r", "\\\\\\r"); + str = str.replaceAll("\\\f", "\\\\\\f"); + + return str; + } + } From a13d0ad9eeab0b6f8b079a4a996be8cef81cc315 Mon Sep 17 00:00:00 2001 From: Matthew Cech Date: Mon, 15 Apr 2019 23:37:14 -0700 Subject: [PATCH 3/3] = Fixed assignment --- src/dataStructures/TaggedPairStore.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dataStructures/TaggedPairStore.java b/src/dataStructures/TaggedPairStore.java index 944c8bd..8c92aa7 100644 --- a/src/dataStructures/TaggedPairStore.java +++ b/src/dataStructures/TaggedPairStore.java @@ -99,13 +99,13 @@ public class TaggedPairStore if(key.endsWith("\\r")) { if(!key.endsWith("\\r\\r")) - key.substring(0, key.length() - 2); + key = key.substring(0, key.length() - 2); } if(value.endsWith("\\r")) { if(!value.endsWith("\\r\\r")) - value.substring(0, value.length() - 2); + value = value.substring(0, value.length() - 2); } if(key == value)