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)_ -logo +logo _**"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 _(配置文件框架)_ -logo +logo **一次配置,轻松读取!** 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; + } +}