From dff48382c2f935b5ec2fdd1f2313d873ec82910b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20Ha=C3=9Flinger?= Date: Tue, 20 Jul 2021 10:42:27 +0200 Subject: [PATCH] add basic support for json array values --- CHANGELOG.md | 1 + .../marhali/easyi18n/util/JsonArrayUtil.java | 51 +++++++++++++++++++ .../de/marhali/easyi18n/util/JsonUtil.java | 15 ++++-- 3 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 src/main/java/de/marhali/easyi18n/util/JsonArrayUtil.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 78892cf..cc341df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ## [Unreleased] ### Added +- Basic support for json array values - Settings option to opt-out code assistance inside editor - Kotlin support for key completion and annotation diff --git a/src/main/java/de/marhali/easyi18n/util/JsonArrayUtil.java b/src/main/java/de/marhali/easyi18n/util/JsonArrayUtil.java new file mode 100644 index 0000000..c1a73e0 --- /dev/null +++ b/src/main/java/de/marhali/easyi18n/util/JsonArrayUtil.java @@ -0,0 +1,51 @@ +package de.marhali.easyi18n.util; + +import com.google.gson.JsonArray; +import org.apache.commons.lang.StringEscapeUtils; + +import java.util.regex.Pattern; + +/** + * Utility methods to read and write json arrays. + * @author marhali + */ +public class JsonArrayUtil { + + public static String ARRAY_PREFIX = "!arr["; + public static String ARRAY_SUFFIX = "]"; + public static char ARRAY_DELIMITER = ';'; + + public static String read(JsonArray array) { + StringBuilder builder = new StringBuilder(ARRAY_PREFIX); + + for(int i = 0; i < array.size(); i++) { + if(i > 0) { + builder.append(ARRAY_DELIMITER); + } + + String value = array.get(i).getAsString().replace(";", "\\;"); + builder.append(StringUtil.escapeControls(value, true)); + } + + builder.append(ARRAY_SUFFIX); + return builder.toString(); + } + + public static JsonArray write(String concat) { + concat = concat.substring(ARRAY_PREFIX.length(), concat.length() - ARRAY_SUFFIX.length()); + String regex = "(? messages = leafNode.getValue(); - String value = StringUtil.escapeControls(entry.getValue().getAsString(), true); + + String value = entry.getValue().isJsonArray() + ? JsonArrayUtil.read(entry.getValue().getAsJsonArray()) + : StringUtil.escapeControls(entry.getValue().getAsString(), true); + messages.put(locale, value); leafNode.setValue(messages); }