0

Merge branch 'feature/messages' into develop

This commit is contained in:
2021-02-04 11:54:23 +03:00
2 changed files with 54 additions and 15 deletions

View File

@@ -621,7 +621,22 @@ message = Messages.get("welcome", "unknown_param_key", 123);
// Приветствуем, {player}! // Приветствуем, {player}!
``` ```
### format
**Messages** можно использовать и просто для форматирования параметизированных шаблонов:
```java
Map<String, Object> = 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 ## XLog

View File

@@ -84,7 +84,7 @@ public class Messages {
String keyLc = key.toLowerCase(); String keyLc = key.toLowerCase();
if (MESSAGES_MAP.containsKey(keyLc)) { if (MESSAGES_MAP.containsKey(keyLc)) {
return formatMessage(MESSAGES_MAP.get(keyLc), params); return format(MESSAGES_MAP.get(keyLc), params);
} else { } else {
return keyLc; return keyLc;
} }
@@ -101,26 +101,50 @@ public class Messages {
String keyLc = key.toLowerCase(); String keyLc = key.toLowerCase();
if (MESSAGES_MAP.containsKey(keyLc)) { if (MESSAGES_MAP.containsKey(keyLc)) {
int len; return format(MESSAGES_MAP.get(keyLc), params);
if ((params.length % 2) == 1) {
len = params.length - 1;
} else {
len = params.length;
}
Map<String, Object> 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);
} else { } else {
return keyLc; return keyLc;
} }
} }
//endregion //endregion
private String formatMessage(String format, Map<String, Object> params) { //region Format message
/**
* Получить сообщение по формату.
*
* @param format параметизированное сообщение
* @param params параметры
* @return сообщение
*/
public String format(String format, Map<String, Object> params) {
return StringSubstitutor.replace(format, 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<String, Object> arrayParamsToMap(Object... params) {
int len;
if ((params.length % 2) == 1) {
len = params.length - 1;
} else {
len = params.length;
}
Map<String, Object> map = new HashMap<>(len / 2);
for (int i = 0; i < len; i = i + 2) {
map.put((String) params[i], params[i + 1]);
}
return map;
}
} }