From ed8eb00566a5e3b7f2d5564d7977a4b3ec8fe5b3 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Thu, 14 Nov 2024 01:35:24 +0100 Subject: wip --- src/main/java/moe/nea/pcj/json/BasicCodecs.java | 51 +++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/main/java/moe/nea/pcj/json/BasicCodecs.java (limited to 'src/main/java/moe/nea/pcj/json/BasicCodecs.java') diff --git a/src/main/java/moe/nea/pcj/json/BasicCodecs.java b/src/main/java/moe/nea/pcj/json/BasicCodecs.java new file mode 100644 index 0000000..8f957f9 --- /dev/null +++ b/src/main/java/moe/nea/pcj/json/BasicCodecs.java @@ -0,0 +1,51 @@ +package moe.nea.pcj.json; + +import moe.nea.pcj.Result; + +public class BasicCodecs { + protected BasicCodecs() {} + + public static BasicCodecs create() { + return new BasicCodecs<>(); + } + + public final JsonCodec STRING = new JsonCodec<>() { + @Override + public Result decode(Format format, JsonLikeOperations ops) { + return ops.getString(format); + } + + @Override + public Result encode(String data, JsonLikeOperations ops) { + return Result.ok(ops.createString(data)); + } + }; + + public final JsonCodec FLOAT = new JsonCodec() { + @Override + public Result decode(Format format, JsonLikeOperations ops) { + return ops.getNumeric(format).map(Number::floatValue); + } + + @Override + public Result encode(Float data, JsonLikeOperations ops) { + return Result.ok(ops.createNumeric(data)); + } + }; + + public final JsonCodec INTEGER = new JsonCodec<>() { + @Override + public Result decode(Format format, JsonLikeOperations ops) { + return ops.getNumeric(format).map(Number::intValue); // TODO: filter for valid ints + } + + @Override + public Result encode(Integer data, JsonLikeOperations ops) { + return Result.ok(ops.createNumeric(data)); + } + }; + + public JsonCodec objectCodec() { + + } +} \ No newline at end of file -- cgit