def print()

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
  }