From b38b619459338d9b9594060b46a2b5c08e2996c1 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Thu, 4 Feb 2021 11:53:52 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=B1=D1=8B?= =?UTF-8?q?=D1=87=D0=BD=D1=8B=D1=85=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20Messages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.MD | 15 +++++++++ src/main/java/ghast/Messages.java | 54 ++++++++++++++++++++++--------- 2 files changed, 54 insertions(+), 15 deletions(-) diff --git a/README.MD b/README.MD index f166547..ce6ac8d 100644 --- a/README.MD +++ b/README.MD @@ -621,7 +621,22 @@ message = Messages.get("welcome", "unknown_param_key", 123); // Приветствуем, {player}! ``` +### format +**Messages** можно использовать и просто для форматирования параметизированных шаблонов: + +```java +Map = map = new HashMap<>(1); +map.put("player", "David"); + +String message = Messages.format("Приветствуем, {player}!", map); +// Приветствуем, David! +``` + +```java +String message = Messages.foramt("Приветствуем, {player}!", "player", "David"); +// Приветствуем, David! +``` ## XLog diff --git a/src/main/java/ghast/Messages.java b/src/main/java/ghast/Messages.java index b765a78..9856f31 100644 --- a/src/main/java/ghast/Messages.java +++ b/src/main/java/ghast/Messages.java @@ -84,7 +84,7 @@ public class Messages { String keyLc = key.toLowerCase(); if (MESSAGES_MAP.containsKey(keyLc)) { - return formatMessage(MESSAGES_MAP.get(keyLc), params); + return format(MESSAGES_MAP.get(keyLc), params); } else { return keyLc; } @@ -101,26 +101,50 @@ public class Messages { String keyLc = key.toLowerCase(); if (MESSAGES_MAP.containsKey(keyLc)) { - int len; - if ((params.length % 2) == 1) { - len = params.length - 1; - } else { - len = params.length; - } - - Map mapParams = new HashMap<>(len / 2); - for (int i = 0; i < len; i = i + 2) { - mapParams.put((String) params[i], params[i + 1]); - } - - return formatMessage(MESSAGES_MAP.get(keyLc), mapParams); + return format(MESSAGES_MAP.get(keyLc), params); } else { return keyLc; } } //endregion - private String formatMessage(String format, Map params) { + //region Format message + /** + * Получить сообщение по формату. + * + * @param format параметизированное сообщение + * @param params параметры + * @return сообщение + */ + public String format(String format, Map params) { return StringSubstitutor.replace(format, params, "{", "}"); } + + /** + * Получить сообщение по формату. + * + * @param format параметизированное сообщение + * @param params параметры + * @return сообщение + */ + public String format(String format, Object... params) { + return format(format, arrayParamsToMap(params)); + } + //endregion + + private Map arrayParamsToMap(Object... params) { + int len; + if ((params.length % 2) == 1) { + len = params.length - 1; + } else { + len = params.length; + } + + Map map = new HashMap<>(len / 2); + for (int i = 0; i < len; i = i + 2) { + map.put((String) params[i], params[i + 1]); + } + + return map; + } }