in tools/src/main/scala/magnolify/tools/SchemaPrinter.scala [50:80]
private def renderCompanion(name: String, fields: List[Record.Field]): Doc = {
val header = Doc.text("object") + Doc.space + Doc.text(name) + Doc.space + Doc.char('{')
val footer = Doc.char('}')
val nestedFields = fields
.flatMap { f =>
f.schema match {
case record: Record =>
Some(record.name -> renderRecord(RenderContext(f.name, Some(name)))(record))
case enum: Primitive.Enum =>
Some(enum.name -> renderEnum(RenderContext(f.name, Some(name)))(enum))
case _ => None
}
}
.groupBy(_._1)
.map { case (k, vs) =>
val docs = vs.map(_._2).toSet
require(
docs.size == 1,
s"Conflicting nested type $k:\n${docs.map(_.renderTrim(80)).mkString("\n")}"
)
docs.head
}
.toList
if (nestedFields.isEmpty) {
Doc.empty
} else {
val body = Doc.intercalate(Doc.hardLine * 2, nestedFields)
Doc.hardLine * 2 + nested(header, body, footer)
}
}