/
example-tuple-02.kt
38 lines (35 loc) · 1.17 KB
/
example-tuple-02.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// This file was automatically generated from tuples.md by Knit tool. Do not edit.
@file:Suppress("PackageDirectoryMismatch", "unused")
package dev.adamko.kxstsgen.example.exampleTuple02
import dev.adamko.kxstsgen.*
import dev.adamko.kxstsgen.core.experiments.TupleSerializer
import kotlinx.serialization.*
@Serializable(with = PostalAddressUSA.Serializer::class)
data class PostalAddressUSA(
@SerialName("num") // 'SerialName' will be ignored in 'Tuple' form
val houseNumber: String,
val streetName: String,
val postcode: String,
) {
object Serializer : TupleSerializer<PostalAddressUSA>(
"PostalAddressUSA",
{
element(PostalAddressUSA::houseNumber)
// custom labels for 'streetName', 'postcode'
element("street", PostalAddressUSA::streetName)
element("zip", PostalAddressUSA::postcode)
}
) {
override fun tupleConstructor(elements: Iterator<*>): PostalAddressUSA {
return PostalAddressUSA(
elements.next() as String,
elements.next() as String,
elements.next() as String,
)
}
}
}
fun main() {
val tsGenerator = KxsTsGenerator()
println(tsGenerator.generate(PostalAddressUSA.serializer()))
}