Support MiniMessage in plot-title flag (#3835)

This commit is contained in:
Pierre Maurice Schwang 2022-10-10 18:41:35 +02:00 committed by GitHub
parent d5445cfbef
commit b740d5854c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 4 deletions

View File

@ -36,7 +36,8 @@ import java.util.regex.Pattern;
public class StringMan { public class StringMan {
private static final Pattern STRING_SPLIT_PATTERN = Pattern.compile("(?<quoted>\"[\\w ]+\")|(?<single>\\w+)"); // Stolen from https://stackoverflow.com/a/366532/12620913 | Debug: https://regex101.com/r/DudJLb/1
private static final Pattern STRING_SPLIT_PATTERN = Pattern.compile("[^\\s\"]+|\"([^\"]*)\"");
public static String replaceFromMap(String string, Map<String, String> replacements) { public static String replaceFromMap(String string, Map<String, String> replacements) {
StringBuilder sb = new StringBuilder(string); StringBuilder sb = new StringBuilder(string);
@ -355,7 +356,7 @@ public class StringMan {
var matcher = StringMan.STRING_SPLIT_PATTERN.matcher(message); var matcher = StringMan.STRING_SPLIT_PATTERN.matcher(message);
List<String> splitMessages = new ArrayList<>(); List<String> splitMessages = new ArrayList<>();
while (matcher.find()) { while (matcher.find()) {
splitMessages.add(matcher.group(0).replaceAll("\"", "")); splitMessages.add(matcher.group(matcher.groupCount() - 1).replaceAll("\"", ""));
} }
return splitMessages; return splitMessages;
} }

View File

@ -101,7 +101,7 @@ public class FlagTest {
public void shouldSuccessfullyParseTitleFlagWithTitleEmptyAndSubTitleSingleWord() { public void shouldSuccessfullyParseTitleFlagWithTitleEmptyAndSubTitleSingleWord() {
Assertions.assertDoesNotThrow(() -> { Assertions.assertDoesNotThrow(() -> {
var title = PlotTitleFlag.TITLE_FLAG_DEFAULT.parse("\"\" \"single\"").getValue(); var title = PlotTitleFlag.TITLE_FLAG_DEFAULT.parse("\"\" \"single\"").getValue();
Assertions.assertEquals(" ", title.title()); Assertions.assertEquals("", title.title());
Assertions.assertEquals("single", title.subtitle()); Assertions.assertEquals("single", title.subtitle());
}, "Should not throw a FlagParseException"); }, "Should not throw a FlagParseException");
} }

View File

@ -32,7 +32,9 @@ public class StringManTest {
new Message("title", List.of("title")), new Message("title", List.of("title")),
new Message("title \"sub title\"", List.of("title", "sub title")), new Message("title \"sub title\"", List.of("title", "sub title")),
new Message("\"a title\" subtitle", List.of("a title", "subtitle")), new Message("\"a title\" subtitle", List.of("a title", "subtitle")),
new Message("\"title\" \"subtitle\"", List.of("title", "subtitle")) new Message("\"title\" \"subtitle\"", List.of("title", "subtitle")),
new Message("\"How <bold>bold</bold> of you\" \"to assume I like <rainbow>rainbows</rainbow>\"",
List.of("How <bold>bold</bold> of you", "to assume I like <rainbow>rainbows</rainbow>"))
); );
for (Message message : messages) { for (Message message : messages) {