diff --git a/features/text/src/main/java/cc/carm/lib/configuration/value/text/PreparedText.java b/features/text/src/main/java/cc/carm/lib/configuration/value/text/PreparedText.java index 15b7e69..887c379 100644 --- a/features/text/src/main/java/cc/carm/lib/configuration/value/text/PreparedText.java +++ b/features/text/src/main/java/cc/carm/lib/configuration/value/text/PreparedText.java @@ -10,6 +10,12 @@ public class PreparedText extends TextDispatcher insert(@NotNull String key, + @NotNull ConfiguredText message, + @NotNull Object... values) { + return insert(key, receiver -> message.parse(receiver, values)); + } + @Override public PreparedText self() { return this; diff --git a/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/TextParser.java b/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/TextParser.java index 2949700..7c0e3d3 100644 --- a/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/TextParser.java +++ b/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/TextParser.java @@ -7,6 +7,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.BiFunction; import java.util.function.Consumer; +import java.util.function.Function; import java.util.function.UnaryOperator; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -45,7 +46,7 @@ public abstract class TextParser> insertion = new HashMap<>(); + protected @NotNull Map>> insertion = new HashMap<>(); protected boolean disableInsertion = false; protected TextParser(@NotNull TextContents texts, @NotNull String... params) { @@ -147,15 +148,26 @@ public abstract class TextParser> linesSupplier) { + this.insertion.put(id, linesSupplier); return self(); } + /** + * Insert the specific contents by the id. + * + * @param id the id of the insertion text + * @param lines the lines to insert + * @return the current {@link TextParser} instance + */ + public SELF insert(@NotNull String id, @NotNull String... lines) { + return insert(id, Arrays.asList(lines)); + } + /** * Insert the specific contents by the id. * @@ -164,8 +176,7 @@ public abstract class TextParser lines) { - this.insertion.put(id, lines); - return self(); + return insert(id, receiver -> lines); } /** @@ -273,8 +284,10 @@ public abstract class TextParser values = this.insertion.get(id); - if (values == null) continue; + List values = Optional.ofNullable(this.insertion.get(id)) + .map(f -> f.apply(receiver)) + .orElse(null); + if (values == null || values.isEmpty()) continue; String prefix = matcher.group("prefix"); String type = matcher.group("type");