Coverage Summary for Class: AlertsAdapterKt (io.heapy.kotmark.renderer.kotlinxhtml.adapters)

Class Method, % Branch, % Line, % Instruction, %
AlertsAdapterKt 100% (3/3) 50% (7/14) 90% (9/10) 71.9% (46/64)
AlertsAdapterKt$alertsAdapter$2$1$1 100% (1/1) 100% (2/2) 100% (27/27)
AlertsAdapterKt$alertsAdapter$2$1$1$1 100% (1/1) 100% (2/2) 100% (2/2) 100% (16/16)
AlertsAdapterKt$alertsAdapter$lambda$1$$inlined$nodeRenderer$1 0% (0/1)
AlertsAdapterKt$alertsAdapter$lambda$1$$inlined$nodeRenderer$1$1 0% (0/2)
AlertsAdapterKt$alertsAdapter$lambda$1$$inlined$nodeRenderer$2 0% (0/1)
AlertsAdapterKt$alertsAdapter$lambda$1$$inlined$nodeRenderer$2$1 0% (0/2)
Total 45.5% (5/11) 56.2% (9/16) 92.9% (13/14) 83.2% (89/107)


 package io.heapy.kotmark.renderer.kotlinxhtml.adapters
 
 import io.heapy.kotmark.ext.gfm.alerts.Alert
 import io.heapy.kotmark.ext.gfm.alerts.AlertTitle
 import io.heapy.kotmark.ext.gfm.alerts.AlertsExtension
 import io.heapy.kotmark.renderer.kotlinxhtml.KotlinxHtmlAdapter
 import io.heapy.kotmark.renderer.kotlinxhtml.nodeRenderer
 
 /** Use the same type/title mapping as the parser when defining custom alert types. */
 fun alertsAdapter(allowedTypes: Map<String, String> = AlertsExtension.STANDARD_TYPES): KotlinxHtmlAdapter {
     val titles = allowedTypes.toMap()
     require(titles.isNotEmpty() && titles.all { [type, title] -> type.isNotEmpty() && type == type.uppercase() && title.isNotEmpty() })
     return KotlinxHtmlAdapter { configuration ->
         configuration.nodeRenderer<Alert> { node ->
             val title = titles[node.type] ?: error("Unknown alert type: ${node.type}")
             val type = node.type.lowercase()
             element(node, "div", linkedMapOf("class" to "markdown-alert markdown-alert-$type", "data-alert-type" to type)) {
                 element(node, "p", mapOf("class" to "markdown-alert-title")) {
                     val first = node.firstChild
                     if (first is AlertTitle) renderChildren(first) else text(title)
                 }
                 renderChildren(node)
             }
         }
         // Title is emitted once by its parent.
         configuration.nodeRenderer<AlertTitle> { }
     }
 }