Coverage Summary for Class: AutolinkExtension (io.heapy.kotmark.ext.autolink)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| AutolinkExtension |
66.7%
(2/3)
|
|
75%
(3/4)
|
100%
(16/16)
|
| AutolinkExtension$Companion |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| AutolinkExtension$Configuration |
100%
(3/3)
|
100%
(2/2)
|
100%
(5/5)
|
100%
(32/32)
|
| Total |
85.7%
(6/7)
|
100%
(2/2)
|
90%
(9/10)
|
100%
(53/53)
|
package io.heapy.kotmark.ext.autolink
import io.heapy.kotmark.Extension
import io.heapy.kotmark.ExtensionsBuilder
import io.heapy.kotmark.KotmarkDsl
import io.heapy.kotmark.ext.autolink.internal.AutolinkPostProcessor
import io.heapy.kotmark.parser.Parser
import kotlin.jvm.JvmStatic
class AutolinkExtension private constructor(configuration: Configuration) : Parser.ParserExtension {
private val linkTypes = configuration.linkTypes.toSet()
override fun extend(parserConfiguration: Parser.Configuration) {
parserConfiguration.postProcessor(AutolinkPostProcessor(linkTypes))
}
@KotmarkDsl
class Configuration internal constructor() {
var linkTypes: Set<AutolinkType> = AutolinkType.entries.toSet()
set(value) {
require(value.isNotEmpty()) { "linkTypes must not be empty" }
field = value.toSet()
}
internal fun create(): AutolinkExtension = AutolinkExtension(this)
}
companion object {
@JvmStatic
fun create(): Extension = autolinkExtension()
}
}
/** Creates [AutolinkExtension] with the supplied configuration. */
fun autolinkExtension(configure: AutolinkExtension.Configuration.() -> Unit = {}): AutolinkExtension =
AutolinkExtension.Configuration().apply(configure).create()
/** Creates and appends [AutolinkExtension] with the supplied configuration. */
fun ExtensionsBuilder.autolink(configure: AutolinkExtension.Configuration.() -> Unit = {}) {
add(autolinkExtension(configure))
}