package org.jetbrains.dokka.base.renderers.html
import kotlinx.html.FlowContent
import kotlinx.html.span
fun FlowContent.buildTextBreakableAfterCapitalLetters(name: String) {
if (name.contains(" ")) {
val withOutSpaces = name.split(" ")
withOutSpaces.dropLast(1).forEach {
buildBreakableText(it)
+" "
}
buildBreakableText(withOutSpaces.last())
} else {
val content = name.replace(Regex("(?!^)([A-Z])"), " $1").split(" ")
joinToHtml(content){
it
}
}
}
fun FlowContent.buildBreakableDotSeparatedHtml(name: String) {
val phrases = name.split(".")
joinToHtml(phrases){
"$it."
}
}
private fun FlowContent.joinToHtml(elements: List, onEach: (String) -> String) {
elements.dropLast(1).forEach {
span {
+onEach(it)
}
wbr { }
}
span {
+elements.last()
}
}
fun FlowContent.buildBreakableText(name: String) =
if (name.contains(".")) buildBreakableDotSeparatedHtml(name)
else buildTextBreakableAfterCapitalLetters(name)