summaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/pcj/json/BasicCodecs.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/moe/nea/pcj/json/BasicCodecs.java')
-rw-r--r--src/main/java/moe/nea/pcj/json/BasicCodecs.java51
1 files changed, 51 insertions, 0 deletions
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<Format> {
+ protected BasicCodecs() {}
+
+ public static <Format> BasicCodecs<Format> create() {
+ return new BasicCodecs<>();
+ }
+
+ public final JsonCodec<String, Format> STRING = new JsonCodec<>() {
+ @Override
+ public Result<String, ? extends JsonLikeError> decode(Format format, JsonLikeOperations<Format> ops) {
+ return ops.getString(format);
+ }
+
+ @Override
+ public Result<Format, ? extends JsonLikeError> encode(String data, JsonLikeOperations<Format> ops) {
+ return Result.ok(ops.createString(data));
+ }
+ };
+
+ public final JsonCodec<Float, Format> FLOAT = new JsonCodec<Float, Format>() {
+ @Override
+ public Result<? extends Float, ? extends JsonLikeError> decode(Format format, JsonLikeOperations<Format> ops) {
+ return ops.getNumeric(format).map(Number::floatValue);
+ }
+
+ @Override
+ public Result<? extends Format, ? extends JsonLikeError> encode(Float data, JsonLikeOperations<Format> ops) {
+ return Result.ok(ops.createNumeric(data));
+ }
+ };
+
+ public final JsonCodec<Integer, Format> INTEGER = new JsonCodec<>() {
+ @Override
+ public Result<? extends Integer, ? extends JsonLikeError> decode(Format format, JsonLikeOperations<Format> ops) {
+ return ops.getNumeric(format).map(Number::intValue); // TODO: filter for valid ints
+ }
+
+ @Override
+ public Result<? extends Format, ? extends JsonLikeError> encode(Integer data, JsonLikeOperations<Format> ops) {
+ return Result.ok(ops.createNumeric(data));
+ }
+ };
+
+ public <T> JsonCodec<T, Format> objectCodec() {
+
+ }
+} \ No newline at end of file