Coverage Summary for Class: HeadingAnchorExtension (io.heapy.kotmark.ext.heading.anchor)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| HeadingAnchorExtension |
75%
(3/4)
|
|
85.7%
(6/7)
|
100%
(27/27)
|
| HeadingAnchorExtension$Companion |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| HeadingAnchorExtension$Configuration |
100%
(2/2)
|
|
100%
(5/5)
|
100%
(31/31)
|
| Total |
85.7%
(6/7)
|
|
92.3%
(12/13)
|
100%
(63/63)
|
package io.heapy.kotmark.ext.heading.anchor
import io.heapy.kotmark.Extension
import io.heapy.kotmark.ExtensionsBuilder
import io.heapy.kotmark.KotmarkDsl
import io.heapy.kotmark.ext.heading.anchor.internal.HeadingIdAttributeProvider
import io.heapy.kotmark.renderer.html.HtmlRenderer
import kotlin.jvm.JvmStatic
class HeadingAnchorExtension private constructor(configuration: Configuration) :
HtmlRenderer.HtmlRendererExtension {
private val defaultId = configuration.defaultId
private val idPrefix = configuration.idPrefix
private val idSuffix = configuration.idSuffix
override fun extend(rendererConfiguration: HtmlRenderer.Configuration) {
rendererConfiguration.attributeProviderFactory {
HeadingIdAttributeProvider.create(defaultId, idPrefix, idSuffix)
}
}
@KotmarkDsl
class Configuration internal constructor() {
var defaultId = "id"
var idPrefix = ""
var idSuffix = ""
internal fun create(): HeadingAnchorExtension = HeadingAnchorExtension(this)
}
companion object {
@JvmStatic
fun create(): Extension = headingAnchorExtension()
}
}
/** Creates [HeadingAnchorExtension] with the supplied configuration. */
fun headingAnchorExtension(configure: HeadingAnchorExtension.Configuration.() -> Unit = {}): HeadingAnchorExtension =
HeadingAnchorExtension.Configuration().apply(configure).create()
/** Creates and appends [HeadingAnchorExtension] with the supplied configuration. */
fun ExtensionsBuilder.headingAnchor(configure: HeadingAnchorExtension.Configuration.() -> Unit = {}) {
add(headingAnchorExtension(configure))
}