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