private def renderCompanion()

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)
    }
  }