diff --git a/README.MD b/README.MD index 7f6bf61..e30dad8 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; + } }