Coverage Summary for Class: TocTextNodeRenderer (io.heapy.kotmark.ext.toc.internal)

Class Method, % Branch, % Line, % Instruction, %
TocTextNodeRenderer 100% (2/2) 60% (6/10) 100% (11/11) 96% (97/101)
TocTextNodeRenderer$render$lambda$0$$inlined$filterIsInstance$1 0% (0/1)
Total 66.7% (2/3) 60% (6/10) 100% (11/11) 96% (97/101)


 package io.heapy.kotmark.ext.toc.internal
 
 import io.heapy.kotmark.ext.toc.TableOfContents
 import io.heapy.kotmark.node.Heading
 import io.heapy.kotmark.node.Node
 import io.heapy.kotmark.renderer.NodeRenderer
 import io.heapy.kotmark.renderer.text.TextContentNodeRendererContext
 
 internal class TocTextNodeRenderer(
     private val context: TextContentNodeRendererContext,
     private val levels: IntRange,
 ) : NodeRenderer {
     override val nodeTypes = setOf(TableOfContents::class)
     private var entries: List<Entry>? = null
 
     override fun render(node: Node) {
         val current = entries ?: run {
             var root = node
             while (root.parent != null) root = root.parent!!
             documentNodes(root).filterIsInstance<Heading>()
                 .filter { it.level in levels }.map { Entry(it.level, headingText(it)) }.toList()
                 .also { entries = it }
         }
         if (current.isNotEmpty()) context.render(outline(current))
     }
 }