summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-11-14 02:14:48 +0100
committerLinnea Gräf <nea@nea.moe>2024-11-14 02:14:48 +0100
commitde24bd3786441914c8071092274ac160cc2c02c3 (patch)
tree9fbf620f23748622be6f29e6d9c2214d95558c2f /src
parented8eb00566a5e3b7f2d5564d7977a4b3ec8fe5b3 (diff)
downloadprofunctor-codecs-java-de24bd3786441914c8071092274ac160cc2c02c3.tar.gz
profunctor-codecs-java-de24bd3786441914c8071092274ac160cc2c02c3.tar.bz2
profunctor-codecs-java-de24bd3786441914c8071092274ac160cc2c02c3.zip
Add tests
Diffstat (limited to 'src')
-rw-r--r--src/main/java/moe/nea/pcj/json/BasicCodecs.java4
-rw-r--r--src/main/java/moe/nea/pcj/json/JsonLikeOperations.java2
-rw-r--r--src/main/java/moe/nea/pcj/json/ListBuilder.java4
-rw-r--r--src/main/java/moe/nea/pcj/json/RecordCodec.java31
-rw-r--r--src/main/java/moe/nea/pcj/json/RecordJoiners.java353
5 files changed, 359 insertions, 35 deletions
diff --git a/src/main/java/moe/nea/pcj/json/BasicCodecs.java b/src/main/java/moe/nea/pcj/json/BasicCodecs.java
index 8f957f9..565711d 100644
--- a/src/main/java/moe/nea/pcj/json/BasicCodecs.java
+++ b/src/main/java/moe/nea/pcj/json/BasicCodecs.java
@@ -44,8 +44,4 @@ public class BasicCodecs<Format> {
return Result.ok(ops.createNumeric(data));
}
};
-
- public <T> JsonCodec<T, Format> objectCodec() {
-
- }
} \ No newline at end of file
diff --git a/src/main/java/moe/nea/pcj/json/JsonLikeOperations.java b/src/main/java/moe/nea/pcj/json/JsonLikeOperations.java
index 7bb0162..ffefeda 100644
--- a/src/main/java/moe/nea/pcj/json/JsonLikeOperations.java
+++ b/src/main/java/moe/nea/pcj/json/JsonLikeOperations.java
@@ -26,7 +26,7 @@ public interface JsonLikeOperations<Format> extends Operation<Format> {
Result<? extends RecordView<Format>, ? extends JsonLikeError> getObject(Format format);
- ListBuilder<Format, Format> createList();
+ 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
index c6e9220..fd2a407 100644
--- a/src/main/java/moe/nea/pcj/json/ListBuilder.java
+++ b/src/main/java/moe/nea/pcj/json/ListBuilder.java
@@ -1,7 +1,7 @@
package moe.nea.pcj.json;
-public interface ListBuilder<Format, ElementFormat> extends ListView<ElementFormat> {
- Format complete();
+public interface ListBuilder<ElementFormat> extends ListView<ElementFormat> {
+ ElementFormat complete();
void add(ElementFormat value);
diff --git a/src/main/java/moe/nea/pcj/json/RecordCodec.java b/src/main/java/moe/nea/pcj/json/RecordCodec.java
index 7ba8815..cb6d696 100644
--- a/src/main/java/moe/nea/pcj/json/RecordCodec.java
+++ b/src/main/java/moe/nea/pcj/json/RecordCodec.java
@@ -1,26 +1,23 @@
package moe.nea.pcj.json;
-import moe.nea.pcj.Codec;
import moe.nea.pcj.Result;
-import moe.nea.pcj.Tuple;
import java.util.function.Function;
-import java.util.stream.Stream;
public record RecordCodec<O, T, Format>(
MapCodec<T, Format> codec,
Function<O, T> getter
) {
- private Result<RecordBuilder<Format>, JsonLikeError> enc(O data, JsonLikeOperations<Format> ops) {
+ Result<RecordBuilder<Format>, JsonLikeError> enc(O data, JsonLikeOperations<Format> ops) {
return codec().encode(getter().apply(data), ops);
}
- private Result<T, JsonLikeError> dec(RecordView<Format> data, JsonLikeOperations<Format> ops) {
+ Result<T, JsonLikeError> dec(RecordView<Format> data, JsonLikeOperations<Format> ops) {
return codec().decode(data, ops);
}
- private static <Format> Result<RecordBuilder<Format>, JsonLikeError> merge(Result<RecordBuilder<Format>, JsonLikeError> left, Result<RecordBuilder<Format>, JsonLikeError> right) {
+ 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));
}
@@ -34,26 +31,4 @@ public record RecordCodec<O, T, Format>(
protected abstract Result<O, JsonLikeError> decode(RecordView<Format> record, JsonLikeOperations<Format> ops);
}
- public static <T1, T2, O, Format> JsonCodec<O, Format> join(
- RecordCodec<O, T1, Format> arg1,
- RecordCodec<O, T2, Format> arg2,
- Tuple.Func2<O, T1, T2> joiner
- ) {
- return new RecordCompleteCodec<>() {
-
- @Override
- public Result<Format, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) {
- return Stream.of(arg1.enc(data, ops), arg2.enc(data, ops))
- .reduce(Result.ok(ops.createObject()), RecordCodec::merge)
- .map(RecordBuilder::complete);
- }
-
- @Override
- public Result<O, JsonLikeError> decode(RecordView<Format> format, JsonLikeOperations<Format> ops) {
- return Tuple.Tuple2.collect(new Tuple.Tuple2<>(arg1, arg2)
- .map(it -> it.dec(format, ops), it -> it.dec(format, ops)))
- .map(it -> it.applyTo(joiner));
- }
- };
- }
}
diff --git a/src/main/java/moe/nea/pcj/json/RecordJoiners.java b/src/main/java/moe/nea/pcj/json/RecordJoiners.java
new file mode 100644
index 0000000..3af622d
--- /dev/null
+++ b/src/main/java/moe/nea/pcj/json/RecordJoiners.java
@@ -0,0 +1,353 @@
+// @generated by genrecord.ts
+package moe.nea.pcj.json;
+
+import moe.nea.pcj.*;
+import moe.nea.pcj.json.RecordCodec.*;
+import java.util.stream.*;
+
+@SuppressWarnings("unused")
+public class RecordJoiners {
+ public static <T0, O, Format> JsonCodec<O, Format> join(
+ RecordCodec<O, T0, Format> arg0,
+ Tuple.Func1<O, T0> joiner
+ ) {
+ return new RecordCompleteCodec<>() {
+ @Override
+ public Result<Format, JsonLikeError> encode(O data, JsonLikeOperations<Format> ops) {
+ return Stream.of(arg0.enc(data, ops))
+ .reduce(Result.ok(ops.createObject()), RecordCodec::merge)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<O, Format> join(
+ RecordCodec<O, T0, Format> arg0,
+ RecordCodec<O, T1, Format> arg1,
+ Tuple.Func2<O, T0, T1> joiner
+ ) {
+ return new RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<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 RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<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 RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<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 RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<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 RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<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 RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<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 RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<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 RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<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 RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<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 RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<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 RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<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 RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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> JsonCodec<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 RecordCompleteCodec<>() {
+ @Override
+ public Result<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)
+ .map(RecordBuilder::complete);
+ }
+ @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));
+ }
+ };
+ }
+}