From bc3e4b3e6f17cf721c79adc52ab95fa60f3b644d Mon Sep 17 00:00:00 2001 From: carm Date: Tue, 4 Mar 2025 01:24:12 +0800 Subject: [PATCH] fix(comment): Fixed yaml comments --- .../demo/tests/conf/DemoConfiguration.java | 6 ++++++ .../configuration/commentable/CommentableMeta.java | 11 +++++++++++ providers/yaml/pom.xml | 2 +- providers/yaml/src/test/java/yaml/test/YamlTests.java | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/demo/src/main/java/cc/carm/lib/configuration/demo/tests/conf/DemoConfiguration.java b/demo/src/main/java/cc/carm/lib/configuration/demo/tests/conf/DemoConfiguration.java index 722129f..7fa1c65 100644 --- a/demo/src/main/java/cc/carm/lib/configuration/demo/tests/conf/DemoConfiguration.java +++ b/demo/src/main/java/cc/carm/lib/configuration/demo/tests/conf/DemoConfiguration.java @@ -36,6 +36,12 @@ public interface DemoConfiguration extends Configuration { @FooterComments({"上述的枚举内容本质上是通过STRING解析的"}) ConfigValue TEST_ENUM = ConfiguredValue.of(ChronoUnit.class, ChronoUnit.DAYS); + @HeaderComments({"空值测试"}) + @InlineComment("空值Inline注释") + ConfiguredMap EMPTY = ConfiguredMap.builderOf(String.class, String.class) + .asLinkedMap().fromString() + .build(); + @ConfigPath("registered_users") // 通过注解规定配置文件中的路径,若不进行注解则以变量名自动生成。 @HeaderComments({"Section类型数据测试"}) // 通过注解给配置添加注释。 @InlineComment("默认地注释会加到Section的首行末尾") // 通过注解给配置添加注释。 diff --git a/features/commentable/src/main/java/cc/carm/lib/configuration/commentable/CommentableMeta.java b/features/commentable/src/main/java/cc/carm/lib/configuration/commentable/CommentableMeta.java index a036ee0..35359cb 100644 --- a/features/commentable/src/main/java/cc/carm/lib/configuration/commentable/CommentableMeta.java +++ b/features/commentable/src/main/java/cc/carm/lib/configuration/commentable/CommentableMeta.java @@ -49,6 +49,17 @@ public interface CommentableMeta { FooterComments.class, FOOTER, a -> Arrays.asList(a.value()) ); + initializer.registerAnnotation(InlineComment.class, INLINE, a -> { + Map map = new HashMap<>(); + if (a.regex().length == 0) { // for current path + map.put(null, a.value()); + return map; + } + for (String regex : a.regex()) { // for specified path + map.put(regex, a.value()); + } + return map; + }); initializer.registerAnnotation(InlineComments.class, INLINE, a -> { Map map = new HashMap<>(); for (InlineComment comment : a.value()) { diff --git a/providers/yaml/pom.xml b/providers/yaml/pom.xml index b02e384..3bd76fa 100644 --- a/providers/yaml/pom.xml +++ b/providers/yaml/pom.xml @@ -14,7 +14,7 @@ ${project.jdk.version} UTF-8 UTF-8 - 1.2.0 + 1.2.1 easyconfiguration-yaml diff --git a/providers/yaml/src/test/java/yaml/test/YamlTests.java b/providers/yaml/src/test/java/yaml/test/YamlTests.java index 82bb848..5315807 100644 --- a/providers/yaml/src/test/java/yaml/test/YamlTests.java +++ b/providers/yaml/src/test/java/yaml/test/YamlTests.java @@ -1,5 +1,6 @@ package yaml.test; +import cc.carm.lib.configuration.commentable.Commentable; import cc.carm.lib.configuration.commentable.CommentableMeta; import cc.carm.lib.configuration.demo.tests.ConfigurationTest; import cc.carm.lib.configuration.source.ConfigurationHolder; @@ -21,7 +22,6 @@ public class YamlTests { ConfigurationTest.testDemo(holder); ConfigurationTest.testInner(holder); - Map> headers = holder.extractMetadata(CommentableMeta.HEADER); System.out.println("Header comments: "); headers.forEach((k, v) -> {