override fun render()

in smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/serde/json/StructEncodeGenerator.kt [51:81]


    override fun render() {
        val containerName = "encodeContainer"
        writer.openBlock("public func encode(to encoder: \$N) throws {", "}", SwiftTypes.Encoder) {
            if (members.isNotEmpty()) {
                writer.write("var \$L = encoder.container(keyedBy: CodingKeys.self)", containerName)
                val membersSortedByName: List<MemberShape> = members.sortedBy { it.memberName }
                membersSortedByName.forEach { member ->
                    val target = ctx.model.expectShape(member.target)
                    val memberName = ctx.symbolProvider.toMemberName(member)
                    when (target) {
                        is CollectionShape -> {
                            writer.openBlock("if let $memberName = $memberName {", "}") {
                                renderEncodeListMember(target, memberName, containerName)
                            }
                        }
                        is MapShape -> {
                            writer.openBlock("if let $memberName = $memberName {", "}") {
                                renderEncodeMapMember(target, memberName, containerName)
                            }
                        }
                        else -> {
                            renderSimpleEncodeMember(
                                target, member, containerName,
                                members.filter { it.hasTrait(HttpPayloadTrait::class.java) }.count() == 0
                            )
                        }
                    }
                }
            }
        }
    }