Peter
08/25/2023, 9:55 AMHTMX
and kotlinx-html
. Turns out it is not difficult to create inner html snippets using the filter
option. Simple example:
fun createInnerUL(block: UL.() -> Unit): String {
var first = true
return createHTML().filter {
if (first && it.tagName == "ul") {
first = false
SKIP
} else {
PASS
}
}.ul { block() }
}
val a = createInnerUL {
li { +"one" }
li { +"two" }
li {
ul {
li {
+"two-a"
}
}
}
}
println(a)
<li>one</li>
<li>two</li>
<li>
<ul>
<li>two-a</li>
</ul>
</li>
adambrangenberg
08/25/2023, 4:30 PMPeter
08/25/2023, 7:11 PMadambrangenberg
08/26/2023, 1:33 PMsuspend fun ApplicationCall.respondHTMX(status: HttpStatusCode = HttpStatusCode.OK, block: BODY.() -> Unit) {
val text = createHTML(true).filter {
if (it.tagName == "body") SKIP else PASS
}.body(block = block)
if (text.isEmpty()) {
throw Exception("Provided HTML was empty")
}
respond(TextContent(text, ContentType.Text.Html.withCharset(Charsets.UTF_8), status))
}
Peter
08/26/2023, 4:54 PMadambrangenberg
08/26/2023, 7:14 PMReuben Firmin
10/26/2023, 11:45 AMReuben Firmin
10/26/2023, 11:51 AM