diff options
author | Linnea Gräf <nea@nea.moe> | 2024-11-14 03:02:05 +0100 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2024-11-14 03:02:05 +0100 |
commit | 4289518c93cf8bf04f88125ef3deea3af8978607 (patch) | |
tree | 288f757a4a276a45a136900577ec5efeb2742063 /src/main/java/moe | |
parent | 5eea18ea497d4bc11466b2bd875582ba26f188f5 (diff) | |
download | profunctor-codecs-java-4289518c93cf8bf04f88125ef3deea3af8978607.tar.gz profunctor-codecs-java-4289518c93cf8bf04f88125ef3deea3af8978607.tar.bz2 profunctor-codecs-java-4289518c93cf8bf04f88125ef3deea3af8978607.zip |
Add named objects
Diffstat (limited to 'src/main/java/moe')
-rw-r--r-- | src/main/java/moe/nea/pcj/json/JsonCodec.java | 15 | ||||
-rw-r--r-- | src/main/java/moe/nea/pcj/json/NamedObject.java | 4 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/main/java/moe/nea/pcj/json/JsonCodec.java b/src/main/java/moe/nea/pcj/json/JsonCodec.java index 6195bee..c5c750b 100644 --- a/src/main/java/moe/nea/pcj/json/JsonCodec.java +++ b/src/main/java/moe/nea/pcj/json/JsonCodec.java @@ -2,7 +2,6 @@ package moe.nea.pcj.json; import moe.nea.pcj.Codec; import moe.nea.pcj.Result; -import moe.nea.pcj.Unit; import java.util.ArrayList; import java.util.List; @@ -47,6 +46,20 @@ public interface JsonCodec<T, Format> extends Codec< }; } + default JsonCodec<T, Format> named(String name) { + return new JsonCodec<>() { + @Override + public Result<? extends T, JsonLikeError> decode(Format format, JsonLikeOperations<Format> ops) { + return JsonCodec.this.decode(format, ops).mapError(it -> new NamedObject(name, it)); + } + + @Override + public Result<? extends Format, JsonLikeError> encode(T data, JsonLikeOperations<Format> ops) { + return JsonCodec.this.encode(data, ops).mapError(it -> new NamedObject(name, it)); + } + }; + } + default MapCodec<T, Format> fieldOf(String key) { return new MapCodec<>() { @Override diff --git a/src/main/java/moe/nea/pcj/json/NamedObject.java b/src/main/java/moe/nea/pcj/json/NamedObject.java new file mode 100644 index 0000000..aedc87b --- /dev/null +++ b/src/main/java/moe/nea/pcj/json/NamedObject.java @@ -0,0 +1,4 @@ +package moe.nea.pcj.json; + +public record NamedObject(String name, JsonLikeError error) implements JsonLikeError { +} |