Coverage Summary for Class: TableHtmlNodeRenderer (io.heapy.kotmark.ext.gfm.tables.internal)

Class Class, % Method, % Branch, % Line, % Instruction, %
TableHtmlNodeRenderer 100% (1/1) 100% (8/8) 87.5% (7/8) 100% (25/25) 100% (129/129)


 package io.heapy.kotmark.ext.gfm.tables.internal
 
 import io.heapy.kotmark.ext.gfm.tables.TableBlock
 import io.heapy.kotmark.ext.gfm.tables.TableBody
 import io.heapy.kotmark.ext.gfm.tables.TableCell
 import io.heapy.kotmark.ext.gfm.tables.TableHead
 import io.heapy.kotmark.ext.gfm.tables.TableRow
 import io.heapy.kotmark.node.Node
 import io.heapy.kotmark.renderer.html.HtmlNodeRendererContext
 
 class TableHtmlNodeRenderer(
     private val context: HtmlNodeRendererContext,
 ) : TableNodeRenderer() {
     private val html = context.writer
 
     override fun renderBlock(node: TableBlock) {
         renderContainer(node, "table")
     }
 
     override fun renderHead(node: TableHead) {
         renderContainer(node, "thead")
     }
 
     override fun renderBody(node: TableBody) {
         renderContainer(node, "tbody")
     }
 
     override fun renderRow(node: TableRow) {
         renderContainer(node, "tr")
     }
 
     override fun renderCell(node: TableCell) {
         val tag = if (node.isHeader) "th" else "td"
         html.line()
         val attributes =
             node.alignment?.let { mapOf("align" to it.name.lowercase()) } ?: emptyMap()
         html.tag(tag, context.extendAttributes(node, tag, attributes))
         renderChildren(node)
         html.tag("/$tag")
         html.line()
     }
 
     private fun renderContainer(node: Node, tag: String) {
         html.line()
         html.tag(tag, context.extendAttributes(node, tag, emptyMap()))
         renderChildren(node)
         html.tag("/$tag")
         html.line()
     }
 
     private fun renderChildren(parent: Node) {
         var child = parent.firstChild
         while (child != null) {
             val next = child.next
             context.render(child)
             child = next
         }
     }
 }