override fun generateTypeSpecFor()

in artist-core/src/main/kotlin/com/uber/artist/KotlinArtistCodeGenerator.kt [63:81]


  override fun generateTypeSpecFor(stencil: KotlinViewStencil, rPackageName: String, traitMap: Map<Class<out KotlinTrait>, KotlinTrait>, superinterfaceClassName: String?): TypeSpec.Builder {
    val rClass = ClassName(rPackageName, "R")
    val typeBuilder = TypeSpec.classBuilder(stencil.name())
        .addModifiers(KModifier.OPEN)
        .superclass(stencil.sourceType)

    superinterfaceClassName?.let { typeBuilder.addSuperinterface(superinterface(superinterfaceClassName)) }

    generateConstructorsFor(stencil, typeBuilder, rClass)
    val initMethod = createInitBuilderFor(stencil, typeBuilder)

    stencil.traits()
        .map { traitName -> traitMap[traitName] }
        .forEach { it?.generateFor(typeBuilder, initMethod, rClass, stencil.name()) }

    typeBuilder.addFunction(initMethod.build())
    stencil.typeHook(typeBuilder)
    return typeBuilder
  }