TableReport.kt

package com.sebastmar.module.report.internal

import com.sebastmar.module.report.internal.domain.SkipReport
import com.sebastmar.module.report.internal.system.SystemWriter

/**
 * Represents a table report that can be generated.
 *
 * This class is responsible for orchestrating the generation of a report
 * using a provided [TableReportBuilder].
 */
internal class TableReport internal constructor(
    reportBuilder: TableReportBuilder,
    skipReport: SkipReport,
    systemWriter: SystemWriter<String>,
) : BaseReport<String, TableReportBuilder>(
    skipReport = skipReport,
    reportBuilder = reportBuilder,
    systemWriter = systemWriter,
) {
    override fun TableReportBuilder.buildReport() {
        topSection()

        table {
            headerRow()

            moduleRows()
        }

        bottomSection()
    }
}