1
mirror of https://github.com/CarmJos/MineConfiguration.git synced 2026-06-04 21:58:16 +08:00

feat(source): 为 ConfigurationWrapper 添加 getSource() 方法以获取源实现内容。

This commit is contained in:
2022-09-10 01:04:04 +08:00
parent 21f7742d78
commit 8437c4c904
19 changed files with 147 additions and 212 deletions
+2
View File
@@ -17,6 +17,8 @@
<artifactId>mineconfiguration-spigot</artifactId>
<packaging>jar</packaging>
<name>MineConfiguration-Spigot</name>
<dependencies>
<dependency>
@@ -1,15 +1,13 @@
package cc.carm.lib.mineconfiguration.spigot.source;
import cc.carm.lib.configuration.core.ConfigInitializer;
import cc.carm.lib.configuration.core.source.ConfigurationComments;
import cc.carm.lib.mineconfiguration.bukkit.source.CraftConfigProvider;
import org.bukkit.configuration.file.YamlConfiguration;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.io.File;
import java.util.Collections;
import java.util.List;
public class SpigotConfigProvider extends CraftConfigProvider {
@@ -17,38 +15,18 @@ public class SpigotConfigProvider extends CraftConfigProvider {
super(file);
}
protected SpigotYAMLComments comments = null;
@Override
public void initializeConfig() {
this.configuration = YamlConfiguration.loadConfiguration(file);
this.comments = new SpigotYAMLComments(configuration);
this.initializer = new ConfigInitializer<>(this);
}
@Override
public void setHeaderComment(@Nullable String path, @Nullable List<String> comments) {
if (path == null) {
this.configuration.options().setHeader(comments);
} else {
this.configuration.setComments(path, comments);
}
public @Nullable ConfigurationComments getComments() {
return this.comments;
}
@Override
public void setInlineComment(@NotNull String path, @Nullable String comment) {
if (comment == null) {
this.configuration.setInlineComments(path, null);
} else {
this.configuration.setComments(path, Collections.singletonList(comment));
}
}
@Override
public @Nullable @Unmodifiable List<String> getHeaderComment(@Nullable String path) {
if (path == null) return Collections.unmodifiableList(this.configuration.options().getHeader());
else return this.configuration.getComments(path);
}
@Override
public @Nullable String getInlineComment(@NotNull String path) {
return String.join(" ", this.configuration.getInlineComments(path));
}
}
@@ -0,0 +1,48 @@
package cc.carm.lib.mineconfiguration.spigot.source;
import cc.carm.lib.configuration.core.source.ConfigurationComments;
import org.bukkit.configuration.file.YamlConfiguration;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collections;
import java.util.List;
public class SpigotYAMLComments extends ConfigurationComments {
protected final YamlConfiguration configuration;
public SpigotYAMLComments(YamlConfiguration configuration) {
this.configuration = configuration;
}
@Override
public void setHeaderComments(@Nullable String path, @Nullable List<String> comments) {
if (path == null) {
this.configuration.options().setHeader(comments);
} else {
this.configuration.setComments(path, comments);
}
}
@Override
public void setInlineComment(@NotNull String path, @Nullable String comment) {
if (comment == null) {
this.configuration.setInlineComments(path, null);
} else {
this.configuration.setComments(path, Collections.singletonList(comment));
}
}
@Override
public @Nullable @Unmodifiable List<String> getHeaderComment(@Nullable String path) {
if (path == null) return Collections.unmodifiableList(this.configuration.options().getHeader());
else return this.configuration.getComments(path);
}
@Override
public @Nullable String getInlineComment(@NotNull String path) {
return String.join(" ", this.configuration.getInlineComments(path));
}
}