summaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe/nea/blog/gen
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-05-02 23:32:11 +0200
committerLinnea Gräf <nea@nea.moe>2024-05-02 23:42:15 +0200
commit7e24b934bbd424669a1c935894dd8799d4db0348 (patch)
treeea17a94215768ed6dea8a306a0bd58dfd936fb5f /src/main/kotlin/moe/nea/blog/gen
parentebe41fbbd8b537b3008c5c52d2c9a496694ea281 (diff)
downloadblog-infra-7e24b934bbd424669a1c935894dd8799d4db0348.tar.gz
blog-infra-7e24b934bbd424669a1c935894dd8799d4db0348.tar.bz2
blog-infra-7e24b934bbd424669a1c935894dd8799d4db0348.zip
Add note blocks and an integration test
Diffstat (limited to 'src/main/kotlin/moe/nea/blog/gen')
-rw-r--r--src/main/kotlin/moe/nea/blog/gen/HtmlFragmentGenerator.kt10
-rw-r--r--src/main/kotlin/moe/nea/blog/gen/MD2HtmlGenerator.kt10
2 files changed, 19 insertions, 1 deletions
diff --git a/src/main/kotlin/moe/nea/blog/gen/HtmlFragmentGenerator.kt b/src/main/kotlin/moe/nea/blog/gen/HtmlFragmentGenerator.kt
index 3ba4f79..7702b75 100644
--- a/src/main/kotlin/moe/nea/blog/gen/HtmlFragmentGenerator.kt
+++ b/src/main/kotlin/moe/nea/blog/gen/HtmlFragmentGenerator.kt
@@ -4,4 +4,12 @@ import moe.nea.blog.md.MarkdownElement
fun interface HtmlFragmentGenerator<T : MarkdownElement> {
fun generateHtml(htmlGenerator: MD2HtmlGenerator, node: T): HtmlFragment
-} \ No newline at end of file
+}
+
+abstract class DefHtmlFragmentGenerator<T : MarkdownElement> : HtmlFragmentGenerator<T> {
+ override fun generateHtml(htmlGenerator: MD2HtmlGenerator, node: T): HtmlFragment {
+ return HtmlDsl().apply { makeHtml(htmlGenerator, node) }.intoFragment()
+ }
+
+ abstract fun HtmlDsl.makeHtml(generator: MD2HtmlGenerator, node: T)
+}
diff --git a/src/main/kotlin/moe/nea/blog/gen/MD2HtmlGenerator.kt b/src/main/kotlin/moe/nea/blog/gen/MD2HtmlGenerator.kt
index 0077469..9c9299e 100644
--- a/src/main/kotlin/moe/nea/blog/gen/MD2HtmlGenerator.kt
+++ b/src/main/kotlin/moe/nea/blog/gen/MD2HtmlGenerator.kt
@@ -8,6 +8,7 @@ import moe.nea.blog.md.FormatSequence
import moe.nea.blog.md.Header
import moe.nea.blog.md.Italics
import moe.nea.blog.md.Link
+import moe.nea.blog.md.MDList
import moe.nea.blog.md.MarkdownElement
import moe.nea.blog.md.Paragraph
import moe.nea.blog.md.Whitespace
@@ -49,6 +50,15 @@ class MD2HtmlGenerator {
registerFragmentGenerator<Italics> { generator, node ->
element("em", mapOf(), generator.generateHtml(node.inner))
}
+ registerFragmentGenerator<MDList> { generator, node ->
+ element("ul", mapOf()) {
+ for (item in node.elements) {
+ element("li", mapOf()) {
+ +generator.generateHtml(item)
+ }
+ }
+ }
+ }
registerFragmentGenerator<Link> { generator, node ->
element("a", mapOf("href" to node.target), generator.generateHtml(node.label ?: Begin()))
}