From dacef0a1e5440c447a3a28e6ab7afadec6f2bf1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Fri, 23 Aug 2024 21:58:05 +0200 Subject: [PATCH 1/7] feat(renderer): Improve the design of regular text --- .../src/main/kotlin/renderer/Decoration.kt | 108 ++++++++++++++++++ .../main/kotlin/renderer/MkDocsRenderer2.kt | 38 +++++- 2 files changed, 142 insertions(+), 4 deletions(-) create mode 100644 renderer/src/main/kotlin/renderer/Decoration.kt diff --git a/renderer/src/main/kotlin/renderer/Decoration.kt b/renderer/src/main/kotlin/renderer/Decoration.kt new file mode 100644 index 0000000..d3e9ef1 --- /dev/null +++ b/renderer/src/main/kotlin/renderer/Decoration.kt @@ -0,0 +1,108 @@ +package opensavvy.dokka.material.mkdocs.renderer + +import org.jetbrains.dokka.pages.Style +import org.jetbrains.dokka.pages.TextStyle +import org.jetbrains.dokka.pages.TokenStyle + +// region Data structure + +fun interface Decoration { + + fun StringBuilder.wrap(content: StringBuilder.() -> Unit) + + companion object { + fun ofSpan(className: String) = + Decoration { content -> + append("") + content() + append("") + } + + fun ofElement(elementName: String) = + Decoration { content -> + append("<$elementName>") + content() + append("") + } + + val NoOp = Decoration {content -> + content() + } + } +} + +// endregion +// region DSL declaration + +class Decorations { + + private val groups = ArrayList>() + private val inlines = ArrayList>() + + constructor(block: Decorations.() -> Unit) { + block() + } + + fun group(style: Style, block: Decoration) { + groups += style to block + } + + fun inline(style: Style, block: Decoration) { + inlines += style to block + } + + fun fromGroupStyles(style: Iterable