diff options
author | Linnea Gräf <nea@nea.moe> | 2024-11-16 17:20:52 +0100 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2024-11-16 17:20:52 +0100 |
commit | aad6ebad69685abd4b7711039d91d5c19dfbf61f (patch) | |
tree | 27eb2b806ac01db251b08ed5794ac81a50603327 /src/main/java/moe/nea/pcj/json | |
parent | 63cb7a0e19e7afd06637dddb848d0254cbff5795 (diff) | |
download | profunctor-codecs-java-aad6ebad69685abd4b7711039d91d5c19dfbf61f.tar.gz profunctor-codecs-java-aad6ebad69685abd4b7711039d91d5c19dfbf61f.tar.bz2 profunctor-codecs-java-aad6ebad69685abd4b7711039d91d5c19dfbf61f.zip |
chore: create subproject for core
Diffstat (limited to 'src/main/java/moe/nea/pcj/json')
21 files changed, 0 insertions, 686 deletions
diff --git a/src/main/java/moe/nea/pcj/json/AtField.java b/src/main/java/moe/nea/pcj/json/AtField.java deleted file mode 100644 index 3780e38..0000000 --- a/src/main/java/moe/nea/pcj/json/AtField.java +++ /dev/null @@ -1,4 +0,0 @@ -package moe.nea.pcj.json; - -public record AtField(String field, JsonLikeError error) implements JsonLikeError { -} diff --git a/src/main/java/moe/nea/pcj/json/AtIndex.java b/src/main/java/moe/nea/pcj/json/AtIndex.java deleted file mode 100644 index ec01112..0000000 --- a/src/main/java/moe/nea/pcj/json/AtIndex.java +++ /dev/null @@ -1,4 +0,0 @@ -package moe.nea.pcj.json; - -public record AtIndex(int index, JsonLikeError error) implements JsonLikeError { -} diff --git a/src/main/java/moe/nea/pcj/json/BasicCodecs.java b/src/main/java/moe/nea/pcj/json/BasicCodecs.java deleted file mode 100644 index 565711d..0000000 --- a/src/main/java/moe/nea/pcj/json/BasicCodecs.java +++ /dev/null @@ -1,47 +0,0 @@ -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)); - } - }; -}
\ No newline at end of file diff --git a/src/main/java/moe/nea/pcj/json/DuplicateJsonKey.java b/src/main/java/moe/nea/pcj/json/DuplicateJsonKey.java deleted file mode 100644 index 13d81db..0000000 --- a/src/main/java/moe/nea/pcj/json/DuplicateJsonKey.java +++ /dev/null @@ -1,4 +0,0 @@ -package moe.nea.pcj.json; - -public record DuplicateJsonKey(String key) implements JsonLikeError { -} diff --git a/src/main/java/moe/nea/pcj/json/DuringKeyExtraction.java b/src/main/java/moe/nea/pcj/json/DuringKeyExtraction.java deleted file mode 100644 index 859f98f..0000000 --- a/src/main/java/moe/nea/pcj/json/DuringKeyExtraction.java +++ /dev/null @@ -1,4 +0,0 @@ -package moe.nea.pcj.json; - -public record DuringKeyExtraction(JsonLikeError error) implements JsonLikeError { -} diff --git a/src/main/java/moe/nea/pcj/json/InSubType.java b/src/main/java/moe/nea/pcj/json/InSubType.java deleted file mode 100644 index ae62a73..0000000 --- a/src/main/java/moe/nea/pcj/json/InSubType.java +++ /dev/null @@ -1,4 +0,0 @@ -package moe.nea.pcj.json; - -public record InSubType<T>(T typeTag, JsonLikeError error) implements JsonLikeError { -} diff --git a/src/main/java/moe/nea/pcj/json/JsonCodec.java b/src/main/java/moe/nea/pcj/json/JsonCodec.java deleted file mode 100644 index c5c750b..0000000 --- a/src/main/java/moe/nea/pcj/json/JsonCodec.java +++ /dev/null @@ -1,84 +0,0 @@ -package moe.nea.pcj.json; - -import moe.nea.pcj.Codec; -import moe.nea.pcj.Result; - -import java.util.ArrayList; -import java.util.List; - -public interface JsonCodec<T, Format> extends Codec< - T, Format, JsonLikeOperations<Format>, - JsonLikeError, JsonLikeError> { - - default JsonCodec<List<T>, Format> listOf() { - return new JsonCodec<>() { - @Override - public Result<Format, JsonLikeError> encode(List<T> data, JsonLikeOperations<Format> ops) { - var list = ops.createList(); - var erros = new ArrayList<JsonLikeError>(); - for (int i = 0; i < data.size(); i++) { - var datum = data.get(i); - final var index = i; - var result = JsonCodec.this.encode(datum, ops) - .mapError(it -> new AtIndex(index, it)); - erros.addAll(result.errors()); - result.valueOrPartial().ifPresent(list::add); - } - return Result.<Format, JsonLikeError>ok(list.complete()).appendErrors(erros); - } - - @Override - public Result<List<T>, JsonLikeError> decode(Format format, JsonLikeOperations<Format> ops) { - var view = Result.<ListView<Format>, JsonLikeError>cast(ops.getList(format)); - return view.flatMap(elements -> { - var acc = new ArrayList<T>(elements.length()); - var errors = new ArrayList<JsonLikeError>(); - for (int i = 0; i < elements.length(); i++) { - final var index = i; - var result = JsonCodec.this.decode(elements.getUnsafe(i), ops) - .mapError(it -> new AtIndex(index, it)); - errors.addAll(result.errors()); - result.valueOrPartial().ifPresent(acc::add); - } - return Result.<List<T>, JsonLikeError>ok(acc).appendErrors(errors); - }); - } - }; - } - - 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 - public Result<T, JsonLikeError> decode(RecordView<Format> record, JsonLikeOperations<Format> ops) { - return record.get(key) - .map(element -> Result.<T, JsonLikeError>cast( - JsonCodec.this.decode(element, ops) - .mapError(it -> new AtField(key, it)))) - .orElseGet(() -> Result.fail(new MissingKey(key))); - } - - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(T value, JsonLikeOperations<Format> ops) { - var record = ops.createObject(); - return Result.<Format, JsonLikeError>cast(JsonCodec.this.encode(value, ops)) - .<JsonLikeError>mapError(it -> new AtField(key, it)) - .flatMap(json -> Result.cast(record.add(key, json).map(unit -> record))); - } - - }; - } -} diff --git a/src/main/java/moe/nea/pcj/json/JsonLikeError.java b/src/main/java/moe/nea/pcj/json/JsonLikeError.java deleted file mode 100644 index 609bd84..0000000 --- a/src/main/java/moe/nea/pcj/json/JsonLikeError.java +++ /dev/null @@ -1,4 +0,0 @@ -package moe.nea.pcj.json; - -public interface JsonLikeError { -} diff --git a/src/main/java/moe/nea/pcj/json/JsonLikeOperations.java b/src/main/java/moe/nea/pcj/json/JsonLikeOperations.java deleted file mode 100644 index ffefeda..0000000 --- a/src/main/java/moe/nea/pcj/json/JsonLikeOperations.java +++ /dev/null @@ -1,32 +0,0 @@ -package moe.nea.pcj.json; - -import moe.nea.pcj.Operation; -import moe.nea.pcj.Result; -import moe.nea.pcj.Unit; - -public interface JsonLikeOperations<Format> extends Operation<Format> { - - Format createNull(Unit value); - - Result<Unit, ? extends JsonLikeError> getNull(Format element); - - Format createNumeric(Number value); - - Result<Number, ? extends JsonLikeError> getNumeric(Format element); - - Format createString(String value); - - Result<String, ? extends JsonLikeError> getString(Format element); - - Format createBoolean(boolean value); - - Result<Boolean, ? extends JsonLikeError> getBoolean(Format format); - - RecordBuilder<Format> createObject(); - - Result<? extends RecordView<Format>, ? extends JsonLikeError> getObject(Format format); - - ListBuilder<Format> createList(); - - Result<? extends ListView<Format>, ? extends JsonLikeError> getList(Format format); -} diff --git a/src/main/java/moe/nea/pcj/json/ListBuilder.java b/src/main/java/moe/nea/pcj/json/ListBuilder.java deleted file mode 100644 index fd2a407..0000000 --- a/src/main/java/moe/nea/pcj/json/ListBuilder.java +++ /dev/null @@ -1,9 +0,0 @@ -package moe.nea.pcj.json; - -public interface ListBuilder<ElementFormat> extends ListView<ElementFormat> { - ElementFormat complete(); - - void add(ElementFormat value); - - void set(int index, ElementFormat value); -} diff --git a/src/main/java/moe/nea/pcj/json/ListView.java b/src/main/java/moe/nea/pcj/json/ListView.java deleted file mode 100644 index dcc6e37..0000000 --- a/src/main/java/moe/nea/pcj/json/ListView.java +++ /dev/null @@ -1,14 +0,0 @@ -package moe.nea.pcj.json; - -import java.util.Optional; - -public interface ListView<Format> { - int length(); - - default Optional<Format> getSafe(int index) { - if (index < 0 || index >= length()) return Optional.empty(); - return Optional.of(getUnsafe(index)); - } - - Format getUnsafe(int index); -} diff --git a/src/main/java/moe/nea/pcj/json/MapCodec.java b/src/main/java/moe/nea/pcj/json/MapCodec.java deleted file mode 100644 index 9f343fd..0000000 --- a/src/main/java/moe/nea/pcj/json/MapCodec.java +++ /dev/null @@ -1,64 +0,0 @@ -package moe.nea.pcj.json; - -import moe.nea.pcj.Result; - -import java.util.function.Function; - -public interface MapCodec<T, Format> { - Result<? extends T, JsonLikeError> decode( - RecordView<Format> record, - JsonLikeOperations<Format> ops); - - Result<RecordBuilder<Format>, JsonLikeError> encode(T value, JsonLikeOperations<Format> ops); - - default <O> MapCodec<? extends O, Format> dispatch( - Function<? super O, ? extends T> keyExtractor, - Function<? super T, Result<? extends MapCodec<? extends O, Format>, ? extends JsonLikeError>> codecGenerator - ) { - // TODO: the codecGenerator function is not exactly typesafe. there should be some limit on keyExtractor and codecGenerator working in tandem - return new MapCodec<>() { - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> record, JsonLikeOperations<Format> ops) { // TODO: map errors - return MapCodec.this.decode(record, ops) - .flatMap(key -> codecGenerator - .apply(key) - .<JsonLikeError>mapError(DuringKeyExtraction::new) - .flatMap(codec -> codec.decode(record, ops) - .<JsonLikeError>mapError(it -> new InSubType<>(key, it)))); - } - - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O value, JsonLikeOperations<Format> ops) { - var key = keyExtractor.apply(value); - return Result.<MapCodec<? extends O, Format>, JsonLikeError>cast( - codecGenerator.apply(key) - .mapError(DuringKeyExtraction::new)) - .flatMap(codec -> MapCodec.this - .encode(key, ops) - .flatMap(keyEncoded -> ((MapCodec<O, Format>) codec) - .encode(value, ops) - .<JsonLikeError>mapError(it -> new InSubType<>(key, it)) - .flatMap(keyEncoded::mergeWith))); - } - }; - } - - default JsonCodec<T, Format> codec() { - return new JsonCodec<>() { - @Override - public Result<? extends T, ? extends JsonLikeError> decode(Format format, JsonLikeOperations<Format> ops) { - return Result.<RecordView<Format>, JsonLikeError>cast(ops.getObject(format)) - .flatMap(record -> MapCodec.this.decode(record, ops)); - } - - @Override - public Result<? extends Format, ? extends JsonLikeError> encode(T data, JsonLikeOperations<Format> ops) { - return Result.cast(MapCodec.this.encode(data, ops)).map(RecordBuilder::complete); - } - }; - } - - default <O> RecordCodec<O, T, Format> withGetter(Function<O, T> getter) { - return new RecordCodec<>(this, getter); - } -} diff --git a/src/main/java/moe/nea/pcj/json/MissingKey.java b/src/main/java/moe/nea/pcj/json/MissingKey.java deleted file mode 100644 index 3dad05c..0000000 --- a/src/main/java/moe/nea/pcj/json/MissingKey.java +++ /dev/null @@ -1,4 +0,0 @@ -package moe.nea.pcj.json; - -public record MissingKey(String missingKey) implements JsonLikeError { -} diff --git a/src/main/java/moe/nea/pcj/json/NamedObject.java b/src/main/java/moe/nea/pcj/json/NamedObject.java deleted file mode 100644 index aedc87b..0000000 --- a/src/main/java/moe/nea/pcj/json/NamedObject.java +++ /dev/null @@ -1,4 +0,0 @@ -package moe.nea.pcj.json; - -public record NamedObject(String name, JsonLikeError error) implements JsonLikeError { -} diff --git a/src/main/java/moe/nea/pcj/json/RecordBuilder.java b/src/main/java/moe/nea/pcj/json/RecordBuilder.java deleted file mode 100644 index c610f27..0000000 --- a/src/main/java/moe/nea/pcj/json/RecordBuilder.java +++ /dev/null @@ -1,12 +0,0 @@ -package moe.nea.pcj.json; - -import moe.nea.pcj.Result; -import moe.nea.pcj.Unit; - -public interface RecordBuilder<ElementFormat> extends RecordView<ElementFormat> { - Result<Unit, JsonLikeError> add(String key, ElementFormat value); - - Result<RecordBuilder<ElementFormat>, JsonLikeError> mergeWith(RecordBuilder<ElementFormat> other); - - ElementFormat complete(); -} diff --git a/src/main/java/moe/nea/pcj/json/RecordCodec.java b/src/main/java/moe/nea/pcj/json/RecordCodec.java deleted file mode 100644 index fa7aac7..0000000 --- a/src/main/java/moe/nea/pcj/json/RecordCodec.java +++ /dev/null @@ -1,23 +0,0 @@ -package moe.nea.pcj.json; - -import moe.nea.pcj.Result; - -import java.util.function.Function; - -public record RecordCodec<O, T, Format>( - MapCodec<T, Format> codec, - Function<O, T> getter -) { - - Result<RecordBuilder<Format>, JsonLikeError> enc(O data, JsonLikeOperations<Format> ops) { - return codec().encode(getter().apply(data), ops); - } - - Result<T, JsonLikeError> dec(RecordView<Format> data, JsonLikeOperations<Format> ops) { - return Result.cast(codec().decode(data, ops)); - } - - static <Format> Result<RecordBuilder<Format>, JsonLikeError> merge(Result<RecordBuilder<Format>, JsonLikeError> left, Result<RecordBuilder<Format>, JsonLikeError> right) { - return left.flatMap(l -> right.flatMap(l::mergeWith)); - } -} diff --git a/src/main/java/moe/nea/pcj/json/RecordJoiners.java b/src/main/java/moe/nea/pcj/json/RecordJoiners.java deleted file mode 100644 index 57bdd63..0000000 --- a/src/main/java/moe/nea/pcj/json/RecordJoiners.java +++ /dev/null @@ -1,338 +0,0 @@ -// @generated by genrecord.ts -package moe.nea.pcj.json; - -import moe.nea.pcj.*; -import java.util.stream.*; - -@SuppressWarnings("unused") -public class RecordJoiners { - public static <T0, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - Tuple.Func1<O, T0> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple1.collect(new Tuple.Tuple1<>(arg0.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - Tuple.Func2<O, T0, T1> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple2.collect(new Tuple.Tuple2<>(arg0.dec(format, ops), arg1.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, T2, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - RecordCodec<O, T2, Format> arg2, - Tuple.Func3<O, T0, T1, T2> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops), arg2.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple3.collect(new Tuple.Tuple3<>(arg0.dec(format, ops), arg1.dec(format, ops), arg2.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, T2, T3, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - RecordCodec<O, T2, Format> arg2, - RecordCodec<O, T3, Format> arg3, - Tuple.Func4<O, T0, T1, T2, T3> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops), arg2.enc(data, ops), arg3.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple4.collect(new Tuple.Tuple4<>(arg0.dec(format, ops), arg1.dec(format, ops), arg2.dec(format, ops), arg3.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, T2, T3, T4, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - RecordCodec<O, T2, Format> arg2, - RecordCodec<O, T3, Format> arg3, - RecordCodec<O, T4, Format> arg4, - Tuple.Func5<O, T0, T1, T2, T3, T4> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops), arg2.enc(data, ops), arg3.enc(data, ops), arg4.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple5.collect(new Tuple.Tuple5<>(arg0.dec(format, ops), arg1.dec(format, ops), arg2.dec(format, ops), arg3.dec(format, ops), arg4.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, T2, T3, T4, T5, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - RecordCodec<O, T2, Format> arg2, - RecordCodec<O, T3, Format> arg3, - RecordCodec<O, T4, Format> arg4, - RecordCodec<O, T5, Format> arg5, - Tuple.Func6<O, T0, T1, T2, T3, T4, T5> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops), arg2.enc(data, ops), arg3.enc(data, ops), arg4.enc(data, ops), arg5.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple6.collect(new Tuple.Tuple6<>(arg0.dec(format, ops), arg1.dec(format, ops), arg2.dec(format, ops), arg3.dec(format, ops), arg4.dec(format, ops), arg5.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, T2, T3, T4, T5, T6, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - RecordCodec<O, T2, Format> arg2, - RecordCodec<O, T3, Format> arg3, - RecordCodec<O, T4, Format> arg4, - RecordCodec<O, T5, Format> arg5, - RecordCodec<O, T6, Format> arg6, - Tuple.Func7<O, T0, T1, T2, T3, T4, T5, T6> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops), arg2.enc(data, ops), arg3.enc(data, ops), arg4.enc(data, ops), arg5.enc(data, ops), arg6.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple7.collect(new Tuple.Tuple7<>(arg0.dec(format, ops), arg1.dec(format, ops), arg2.dec(format, ops), arg3.dec(format, ops), arg4.dec(format, ops), arg5.dec(format, ops), arg6.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, T2, T3, T4, T5, T6, T7, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - RecordCodec<O, T2, Format> arg2, - RecordCodec<O, T3, Format> arg3, - RecordCodec<O, T4, Format> arg4, - RecordCodec<O, T5, Format> arg5, - RecordCodec<O, T6, Format> arg6, - RecordCodec<O, T7, Format> arg7, - Tuple.Func8<O, T0, T1, T2, T3, T4, T5, T6, T7> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops), arg2.enc(data, ops), arg3.enc(data, ops), arg4.enc(data, ops), arg5.enc(data, ops), arg6.enc(data, ops), arg7.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple8.collect(new Tuple.Tuple8<>(arg0.dec(format, ops), arg1.dec(format, ops), arg2.dec(format, ops), arg3.dec(format, ops), arg4.dec(format, ops), arg5.dec(format, ops), arg6.dec(format, ops), arg7.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, T2, T3, T4, T5, T6, T7, T8, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - RecordCodec<O, T2, Format> arg2, - RecordCodec<O, T3, Format> arg3, - RecordCodec<O, T4, Format> arg4, - RecordCodec<O, T5, Format> arg5, - RecordCodec<O, T6, Format> arg6, - RecordCodec<O, T7, Format> arg7, - RecordCodec<O, T8, Format> arg8, - Tuple.Func9<O, T0, T1, T2, T3, T4, T5, T6, T7, T8> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops), arg2.enc(data, ops), arg3.enc(data, ops), arg4.enc(data, ops), arg5.enc(data, ops), arg6.enc(data, ops), arg7.enc(data, ops), arg8.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple9.collect(new Tuple.Tuple9<>(arg0.dec(format, ops), arg1.dec(format, ops), arg2.dec(format, ops), arg3.dec(format, ops), arg4.dec(format, ops), arg5.dec(format, ops), arg6.dec(format, ops), arg7.dec(format, ops), arg8.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - RecordCodec<O, T2, Format> arg2, - RecordCodec<O, T3, Format> arg3, - RecordCodec<O, T4, Format> arg4, - RecordCodec<O, T5, Format> arg5, - RecordCodec<O, T6, Format> arg6, - RecordCodec<O, T7, Format> arg7, - RecordCodec<O, T8, Format> arg8, - RecordCodec<O, T9, Format> arg9, - Tuple.Func10<O, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops), arg2.enc(data, ops), arg3.enc(data, ops), arg4.enc(data, ops), arg5.enc(data, ops), arg6.enc(data, ops), arg7.enc(data, ops), arg8.enc(data, ops), arg9.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple10.collect(new Tuple.Tuple10<>(arg0.dec(format, ops), arg1.dec(format, ops), arg2.dec(format, ops), arg3.dec(format, ops), arg4.dec(format, ops), arg5.dec(format, ops), arg6.dec(format, ops), arg7.dec(format, ops), arg8.dec(format, ops), arg9.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - RecordCodec<O, T2, Format> arg2, - RecordCodec<O, T3, Format> arg3, - RecordCodec<O, T4, Format> arg4, - RecordCodec<O, T5, Format> arg5, - RecordCodec<O, T6, Format> arg6, - RecordCodec<O, T7, Format> arg7, - RecordCodec<O, T8, Format> arg8, - RecordCodec<O, T9, Format> arg9, - RecordCodec<O, T10, Format> arg10, - Tuple.Func11<O, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops), arg2.enc(data, ops), arg3.enc(data, ops), arg4.enc(data, ops), arg5.enc(data, ops), arg6.enc(data, ops), arg7.enc(data, ops), arg8.enc(data, ops), arg9.enc(data, ops), arg10.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple11.collect(new Tuple.Tuple11<>(arg0.dec(format, ops), arg1.dec(format, ops), arg2.dec(format, ops), arg3.dec(format, ops), arg4.dec(format, ops), arg5.dec(format, ops), arg6.dec(format, ops), arg7.dec(format, ops), arg8.dec(format, ops), arg9.dec(format, ops), arg10.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - RecordCodec<O, T2, Format> arg2, - RecordCodec<O, T3, Format> arg3, - RecordCodec<O, T4, Format> arg4, - RecordCodec<O, T5, Format> arg5, - RecordCodec<O, T6, Format> arg6, - RecordCodec<O, T7, Format> arg7, - RecordCodec<O, T8, Format> arg8, - RecordCodec<O, T9, Format> arg9, - RecordCodec<O, T10, Format> arg10, - RecordCodec<O, T11, Format> arg11, - Tuple.Func12<O, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops), arg2.enc(data, ops), arg3.enc(data, ops), arg4.enc(data, ops), arg5.enc(data, ops), arg6.enc(data, ops), arg7.enc(data, ops), arg8.enc(data, ops), arg9.enc(data, ops), arg10.enc(data, ops), arg11.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple12.collect(new Tuple.Tuple12<>(arg0.dec(format, ops), arg1.dec(format, ops), arg2.dec(format, ops), arg3.dec(format, ops), arg4.dec(format, ops), arg5.dec(format, ops), arg6.dec(format, ops), arg7.dec(format, ops), arg8.dec(format, ops), arg9.dec(format, ops), arg10.dec(format, ops), arg11.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - RecordCodec<O, T2, Format> arg2, - RecordCodec<O, T3, Format> arg3, - RecordCodec<O, T4, Format> arg4, - RecordCodec<O, T5, Format> arg5, - RecordCodec<O, T6, Format> arg6, - RecordCodec<O, T7, Format> arg7, - RecordCodec<O, T8, Format> arg8, - RecordCodec<O, T9, Format> arg9, - RecordCodec<O, T10, Format> arg10, - RecordCodec<O, T11, Format> arg11, - RecordCodec<O, T12, Format> arg12, - Tuple.Func13<O, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops), arg2.enc(data, ops), arg3.enc(data, ops), arg4.enc(data, ops), arg5.enc(data, ops), arg6.enc(data, ops), arg7.enc(data, ops), arg8.enc(data, ops), arg9.enc(data, ops), arg10.enc(data, ops), arg11.enc(data, ops), arg12.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple13.collect(new Tuple.Tuple13<>(arg0.dec(format, ops), arg1.dec(format, ops), arg2.dec(format, ops), arg3.dec(format, ops), arg4.dec(format, ops), arg5.dec(format, ops), arg6.dec(format, ops), arg7.dec(format, ops), arg8.dec(format, ops), arg9.dec(format, ops), arg10.dec(format, ops), arg11.dec(format, ops), arg12.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } - public static <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, O, Format> MapCodec<O, Format> join( - RecordCodec<O, T0, Format> arg0, - RecordCodec<O, T1, Format> arg1, - RecordCodec<O, T2, Format> arg2, - RecordCodec<O, T3, Format> arg3, - RecordCodec<O, T4, Format> arg4, - RecordCodec<O, T5, Format> arg5, - RecordCodec<O, T6, Format> arg6, - RecordCodec<O, T7, Format> arg7, - RecordCodec<O, T8, Format> arg8, - RecordCodec<O, T9, Format> arg9, - RecordCodec<O, T10, Format> arg10, - RecordCodec<O, T11, Format> arg11, - RecordCodec<O, T12, Format> arg12, - RecordCodec<O, T13, Format> arg13, - Tuple.Func14<O, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> joiner - ) { - return new MapCodec<>() { - @Override - public Result<RecordBuilder<Format>, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) { - return Stream.of(arg0.enc(data, ops), arg1.enc(data, ops), arg2.enc(data, ops), arg3.enc(data, ops), arg4.enc(data, ops), arg5.enc(data, ops), arg6.enc(data, ops), arg7.enc(data, ops), arg8.enc(data, ops), arg9.enc(data, ops), arg10.enc(data, ops), arg11.enc(data, ops), arg12.enc(data, ops), arg13.enc(data, ops)) - .reduce(Result.ok(ops.createObject()), RecordCodec::merge); - } - @Override - public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) { - return Tuple.Tuple14.collect(new Tuple.Tuple14<>(arg0.dec(format, ops), arg1.dec(format, ops), arg2.dec(format, ops), arg3.dec(format, ops), arg4.dec(format, ops), arg5.dec(format, ops), arg6.dec(format, ops), arg7.dec(format, ops), arg8.dec(format, ops), arg9.dec(format, ops), arg10.dec(format, ops), arg11.dec(format, ops), arg12.dec(format, ops), arg13.dec(format, ops))) - .map(it -> it.applyTo(joiner)); - } - }; - } -} diff --git a/src/main/java/moe/nea/pcj/json/RecordView.java b/src/main/java/moe/nea/pcj/json/RecordView.java deleted file mode 100644 index 968a936..0000000 --- a/src/main/java/moe/nea/pcj/json/RecordView.java +++ /dev/null @@ -1,10 +0,0 @@ -package moe.nea.pcj.json; - -import java.util.Collection; -import java.util.Optional; - -public interface RecordView<Format> { - Collection<String> getKeys(); - - Optional<Format> get(String key); -} diff --git a/src/main/java/moe/nea/pcj/json/UnexpectedJsonElement.java b/src/main/java/moe/nea/pcj/json/UnexpectedJsonElement.java deleted file mode 100644 index 7bee7c1..0000000 --- a/src/main/java/moe/nea/pcj/json/UnexpectedJsonElement.java +++ /dev/null @@ -1,7 +0,0 @@ -package moe.nea.pcj.json; - -public record UnexpectedJsonElement( - String expectedType, - Object actualJsonObject -) implements JsonLikeError { -} diff --git a/src/main/java/moe/nea/pcj/json/UnknownSubtype.java b/src/main/java/moe/nea/pcj/json/UnknownSubtype.java deleted file mode 100644 index 942a7dc..0000000 --- a/src/main/java/moe/nea/pcj/json/UnknownSubtype.java +++ /dev/null @@ -1,10 +0,0 @@ -package moe.nea.pcj.json; - -import java.util.Set; - -public record UnknownSubtype<T>(T actual, Set<T> expectedTypes) implements JsonLikeError { - @SafeVarargs - public UnknownSubtype(T actual, T... expected) { - this(actual, Set.of(expected)); - } -} diff --git a/src/main/java/moe/nea/pcj/json/package-info.java b/src/main/java/moe/nea/pcj/json/package-info.java deleted file mode 100644 index a5aace0..0000000 --- a/src/main/java/moe/nea/pcj/json/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@NullMarked -package moe.nea.pcj.json; - -import org.jspecify.annotations.NullMarked;
\ No newline at end of file |