diff --git a/.doc/images/logo-bg.png b/.doc/images/logo-bg.png
deleted file mode 100644
index 14b3b63..0000000
Binary files a/.doc/images/logo-bg.png and /dev/null differ
diff --git a/.doc/images/logo-bg.svg b/.doc/images/logo-bg.svg
new file mode 100644
index 0000000..2f60017
--- /dev/null
+++ b/.doc/images/logo-bg.svg
@@ -0,0 +1,79 @@
+
+
\ No newline at end of file
diff --git a/.doc/images/logo.png b/.doc/images/logo.png
deleted file mode 100644
index de36c44..0000000
Binary files a/.doc/images/logo.png and /dev/null differ
diff --git a/.doc/images/logo.svg b/.doc/images/logo.svg
new file mode 100644
index 0000000..970ac69
--- /dev/null
+++ b/.doc/images/logo.svg
@@ -0,0 +1,38 @@
+
+
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index cc4eb8a..93d00ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
.idea/*
-!.idea/icon.png
+!.idea/icon.svg
**/target/
**.iml
\ No newline at end of file
diff --git a/.idea/icon.png b/.idea/icon.png
deleted file mode 100644
index 14b3b63..0000000
Binary files a/.idea/icon.png and /dev/null differ
diff --git a/.idea/icon.svg b/.idea/icon.svg
new file mode 100644
index 0000000..822507e
--- /dev/null
+++ b/.idea/icon.svg
@@ -0,0 +1,80 @@
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index fd0df58..e84509d 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@ README LANGUAGES [ [**English**](README.md) | [中文](README_CN.md) ]
# configured _(config framework)_
-
+
_**"Once set, Simple get."**_
diff --git a/README_CN.md b/README_CN.md
index eb09198..9bc6295 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -14,7 +14,7 @@ README LANGUAGES [ [English](README.md) | [**中文**](README_CN.md) ]
# configured _(配置文件框架)_
-
+
**一次配置,轻松读取!**
diff --git a/core/src/main/java/cc/carm/lib/configuration/function/ValueSupplier.java b/core/src/main/java/cc/carm/lib/configuration/function/ValueSupplier.java
deleted file mode 100644
index f8a1274..0000000
--- a/core/src/main/java/cc/carm/lib/configuration/function/ValueSupplier.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package cc.carm.lib.configuration.function;
-
-public interface ValueSupplier {
-
-
-
-}
diff --git a/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/ContentHandler.java b/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/ContentHandler.java
index 011e570..607ce6b 100644
--- a/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/ContentHandler.java
+++ b/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/ContentHandler.java
@@ -1,6 +1,7 @@
package cc.carm.lib.configuration.value.text.function;
import cc.carm.lib.configuration.value.text.data.TextContents;
+import cc.carm.lib.configuration.value.text.function.modifier.ContentReplacer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -46,6 +47,7 @@ public abstract class ContentHandler.+)](?.*)$"
);
+ public static final @NotNull Function
public static final @NotNull UnaryOperator DEFAULT_PARAM_BUILDER = s -> "%(" + s + ")";
protected BiFunction parser = (receiver, value) -> value;
@@ -58,6 +60,9 @@ public abstract class ContentHandler paramFormatter = DEFAULT_PARAM_BUILDER;
protected @NotNull String[] params;
+ protected @NotNull List replacers = new ArrayList<>();
+ protected @NotNull List inserters = new ArrayList<>();
+
/**
* Used to store the insertion of the message
*/
diff --git a/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/modifier/ContentReplacer.java b/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/modifier/ContentReplacer.java
new file mode 100644
index 0000000..8ebf952
--- /dev/null
+++ b/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/modifier/ContentReplacer.java
@@ -0,0 +1,82 @@
+package cc.carm.lib.configuration.value.text.function.modifier;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+import java.util.regex.Pattern;
+
+public class ContentReplacer {
+
+ public static ContentReplacer.Builder match(@NotNull Predicate matcher) {
+ return new Builder<>(matcher);
+ }
+
+ public static ContentReplacer.Builder match(@NotNull String id) {
+ return match(text -> text.equalsIgnoreCase(id));
+ }
+
+ public static ContentReplacer.Builder match(@NotNull Pattern pattern) {
+ return match(text -> pattern.matcher(text).find());
+ }
+
+ protected final int priority;
+ protected final @NotNull Predicate matcher;
+ protected final BiFunction<@NotNull RECEIVER, @NotNull String, @Nullable String> supplier;
+
+ public ContentReplacer(int priority,
+ @NotNull Predicate matcher,
+ BiFunction<@NotNull RECEIVER, @NotNull String, @Nullable String> supplier) {
+ this.priority = priority;
+ this.matcher = matcher;
+ this.supplier = supplier;
+ }
+
+ public @NotNull Predicate matcher() {
+ return this.matcher;
+ }
+
+ public boolean check(@NotNull String param) {
+ return this.matcher.test(param);
+ }
+
+ public @Nullable String content(@NotNull RECEIVER receiver, @NotNull String matchedParam) {
+ return this.supplier == null ? null : this.supplier.apply(receiver, matchedParam);
+ }
+
+ public static class Builder {
+
+ protected final @NotNull Predicate matcher;
+ protected int priority = 0;
+
+ public Builder(@NotNull Predicate matcher) {
+ this.matcher = matcher;
+ }
+
+ public @NotNull Builder priority(int priority) {
+ this.priority = priority;
+ return this;
+ }
+
+ public @NotNull ContentReplacer to(BiFunction<@NotNull R, @NotNull String, @Nullable String> supplier) {
+ return new ContentReplacer<>(this.priority, this.matcher, supplier);
+ }
+
+ public @NotNull ContentReplacer to(Function<@NotNull R, @Nullable String> supplier) {
+ return to((receiver, matchedParam) -> supplier.apply(receiver));
+ }
+
+ public @NotNull ContentReplacer to(Supplier<@Nullable String> supplier) {
+ return to((receiver, matchedParam) -> supplier.get());
+ }
+
+ public @NotNull ContentReplacer to(@NotNull String content) {
+ return to(() -> content);
+ }
+
+ }
+
+}
diff --git a/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/modifier/ParamHandler.java b/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/modifier/ParamHandler.java
new file mode 100644
index 0000000..0567bd2
--- /dev/null
+++ b/features/text/src/main/java/cc/carm/lib/configuration/value/text/function/modifier/ParamHandler.java
@@ -0,0 +1,26 @@
+package cc.carm.lib.configuration.value.text.function.modifier;
+
+import java.util.function.Function;
+import java.util.regex.Pattern;
+
+public class ParamHandler {
+
+ // %()
+ public static final Pattern DEFAULT_PARAM_PATTERN = Pattern.compile("%\\((?[^)]+)\\)");
+ public static final ParamHandler DEFAULT_PARAM = new ParamHandler(
+ s -> {
+ },
+ s -> {
+
+ }
+ )
+
+
+ protected final Function extractor;
+ protected final Function replacer;
+
+ public ParamHandler(Function extractor, Function replacer) {
+ this.extractor = extractor;
+ this.replacer = replacer;
+ }
+}