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