From a0d8cb2d5dbac3653c1203502e617329cfaf65cc Mon Sep 17 00:00:00 2001 From: AppleDash Date: Thu, 15 Dec 2016 17:55:42 -0500 Subject: [PATCH] Add indexedFormat() to MessageUtils. --- .../saneeconomy/utils/MessageUtils.java | 22 +++++++++++++++++++ .../saneeconomy/test/MessageUtilsTest.java | 18 +++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 SaneEconomyCore/src/test/java/org/appledash/saneeconomy/test/MessageUtilsTest.java diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/MessageUtils.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/MessageUtils.java index e48d4ba..444244f 100644 --- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/MessageUtils.java +++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/MessageUtils.java @@ -4,6 +4,9 @@ import org.appledash.saneeconomy.SaneEconomy; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import static org.appledash.saneeconomy.utils.I18n._; /** @@ -23,4 +26,23 @@ public class MessageUtils { String prefix = ChatColor.translateAlternateColorCodes('&', SaneEconomy.getInstance().getConfig().getString("chat.prefix", "")); target.sendMessage(prefix + String.format(fmt, (Object[])args)); } + + public static String indexedFormat(String fmt, String... arguments) { + Matcher m = Pattern.compile("\\{([0-9]+)\\}").matcher(fmt); + StringBuffer formatted = new StringBuffer(); + + while (m.find()) { + int index = Integer.valueOf(m.group(1)) - 1; + + if (index > arguments.length - 1 || index < 0) { + throw new IllegalArgumentException("Index must be within the range of the given arguments."); + } + + m.appendReplacement(formatted, arguments[index]); + } + + m.appendTail(formatted); + + return formatted.toString(); + } } diff --git a/SaneEconomyCore/src/test/java/org/appledash/saneeconomy/test/MessageUtilsTest.java b/SaneEconomyCore/src/test/java/org/appledash/saneeconomy/test/MessageUtilsTest.java new file mode 100644 index 0000000..9fa8023 --- /dev/null +++ b/SaneEconomyCore/src/test/java/org/appledash/saneeconomy/test/MessageUtilsTest.java @@ -0,0 +1,18 @@ +package org.appledash.saneeconomy.test; + +import org.appledash.saneeconomy.utils.MessageUtils; +import org.junit.Assert; +import org.junit.Test; + +/** + * Created by appledash on 12/15/16. + * Blackjack is best pony. + */ +public class MessageUtilsTest { + @Test + public void testIndexedFormat() { + Assert.assertEquals("Hello, world!", MessageUtils.indexedFormat("{1}, {2}!", "Hello", "world")); + Assert.assertEquals("Hello, world!", MessageUtils.indexedFormat("Hello, {1}!", "world", "discarded")); + Assert.assertEquals("Hello, world!", MessageUtils.indexedFormat("Hello, {2}!", "discarded", "world")); + } +}