in tools/src/main/scala/magnolify/tools/SchemaPrinter.scala [27:48]
def print(schema: Record, width: Int = 100): String =
renderRecord(RootContext)(schema).renderTrim(width)
private def renderRecord(ctx: RenderContext)(schema: Record): Doc = {
val name = schema.name.getOrElse(toUpperCamel(ctx.field))
val header = Doc.text("case class") + Doc.space + Doc.text(name) + Doc.char('(')
val body = Doc.intercalate(
Doc.char(',') + Doc.lineOrSpace,
schema.fields.map { f =>
val fieldCtx = RenderContext(f.name, Some(name))
val param = quoteIdentifier(f.name)
val tpe = renderType(fieldCtx)(f.schema)
Doc.text(param) + Doc.char(':') + Doc.space + tpe
}
)
val footer = Doc.char(')')
val caseClass = body.tightBracketBy(header + Doc.lineOrEmpty, Doc.lineOrEmpty + footer)
val companion = renderCompanion(name, schema.fields)
caseClass + companion
}