Skip to content

Commit

Permalink
🐺💾🪡🔩
Browse files Browse the repository at this point in the history
  • Loading branch information
AmarokIce committed Jan 13, 2025
1 parent a9d2ba1 commit 719e663
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,29 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package band.kessoku.lib.api.config.api;

import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
package band.kessoku.lib.api.config;

import band.kessoku.lib.api.config.api.Codec;
import band.kessoku.lib.api.config.api.ConfigData;
import club.someoneice.json.JSON;
import club.someoneice.json.Pair;
import club.someoneice.json.node.JsonNode;
import club.someoneice.json.node.MapNode;
import club.someoneice.json.processor.JsonBuilder;
import com.electronwill.nightconfig.core.CommentedConfig;
import com.electronwill.nightconfig.core.Config;
import com.electronwill.nightconfig.core.io.ConfigParser;
import com.electronwill.nightconfig.toml.TomlFormat;
import com.electronwill.nightconfig.toml.TomlParser;
import com.google.common.collect.Maps;

import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;

/**
* @see Config @Config
* @see band.kessoku.lib.api.config.api.Config @Config
* @see ConfigBasicCodec#register(String, Codec)
*
* @author AmarokIce
Expand All @@ -54,7 +61,7 @@ public String decode(Map<String, ConfigData> value) {
builder.append("{").append("\n");
for (ConfigData data : value.values()) {
builder.append(" ");
builder.append("\"").append(data.key()).append("\"")
builder.append("\"").append(data.key()).append("\"").append(":")
.append(data.rawValue())
.append(",").append("\n");
}
Expand Down Expand Up @@ -84,7 +91,7 @@ public String decode(Map<String, ConfigData> value) {
for (String comment : data.comments()) {
builder.append("// ").append(comment).append("\n");
}
builder.append(data.key()).append(data.rawValue())
builder.append(data.key()).append(":").append(data.rawValue())
.append(",").append("\n");
}
builder.deleteCharAt(builder.length() - 2);
Expand All @@ -93,6 +100,33 @@ public String decode(Map<String, ConfigData> value) {
return builder.toString();
}
};
private static final Codec<Map<String, ConfigData>> TOML = new Codec<>() {
@Override
public Map<String, ConfigData> encode(String valueStr) {
LinkedHashMap<String, ConfigData> data = new LinkedHashMap<>();
Config config = new TomlParser().parse(valueStr);
config.entrySet().stream()
.filter(entry -> Objects.nonNull(entry.getRawValue()))
.forEach(it -> data.put(it.getKey(), new ConfigData(it.getKey(),
it.getRawValue().toString(), Collections.emptyList())));
return data;
}

@Override
public String decode(Map<String, ConfigData> value) {
StringBuilder builder = new StringBuilder();
for (ConfigData data : value.values()) {
for (String comment : data.comments()) {
builder.append("# ").append(comment).append("\n");
}
builder.append(data.key())
.append("=")
.append(data.rawValue())
.append("\n");
}
return builder.toString();
}
};

public static Codec<Map<String, ConfigData>> getCodec(String name) {
var codec = CODECS.get(name);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,6 @@
*/
package band.kessoku.lib.api.config;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.nio.file.Path;
import java.util.*;

import band.kessoku.lib.api.KessokuLib;
import band.kessoku.lib.api.base.reflect.ModifiersUtil;
import band.kessoku.lib.api.base.reflect.ReflectUtil;
Expand All @@ -30,6 +24,12 @@
import com.google.common.collect.*;
import com.google.common.io.Files;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.nio.file.Path;
import java.util.*;

/**
* The config handler, also see {@link Config Config}. <br>
* The config format or file type determined by config codec.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
*/
package band.kessoku.lib.api.config.api;

import band.kessoku.lib.api.config.ConfigBasicCodec;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
*/
package band.kessoku.lib.api.config.api;

import java.util.Objects;

import band.kessoku.lib.api.config.ConfigHandler;
import band.kessoku.lib.api.config.values.*;

import java.util.Objects;

/**
* ConfigValue is just a data container,
* any data processing should use {@link Codec}.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
*/
package band.kessoku.lib.api.config.values;

import java.util.Collection;

import band.kessoku.lib.api.config.api.Codec;
import band.kessoku.lib.api.config.api.ConfigValue;
import com.google.common.collect.Lists;

import java.util.Collection;

/**
* @author AmarokIce
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

import band.kessoku.lib.api.config.api.Codec;
import band.kessoku.lib.api.config.api.ConfigValue;

import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
*/
package band.kessoku.lib.api.config.values;

import java.util.Map;

import band.kessoku.lib.api.config.api.Codec;
import band.kessoku.lib.api.config.api.ConfigValue;
import com.google.common.collect.Maps;

import java.util.Map;

/**
* @author AmarokIce
*/
Expand Down

0 comments on commit 719e663

Please sign in to comment.