aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/pages
diff options
context:
space:
mode:
authorBłażej Kardyś <bkardys@virtuslab.com>2020-05-27 01:16:48 +0200
committerBłażej Kardyś <bkardys@virtuslab.com>2020-06-04 11:26:05 +0200
commit6dc9498ca849645ecb4ec923bb7116b245dca706 (patch)
tree23022e6d6f3aea18b9e8efaaa482cafae9bee989 /core/src/main/kotlin/pages
parentb614604effda51ca7c76c8901be78ced62b642b2 (diff)
downloaddokka-6dc9498ca849645ecb4ec923bb7116b245dca706.tar.gz
dokka-6dc9498ca849645ecb4ec923bb7116b245dca706.tar.bz2
dokka-6dc9498ca849645ecb4ec923bb7116b245dca706.zip
All modules page generation
Diffstat (limited to 'core/src/main/kotlin/pages')
-rw-r--r--core/src/main/kotlin/pages/ContentNodes.kt3
-rw-r--r--core/src/main/kotlin/pages/PageNodes.kt25
2 files changed, 27 insertions, 1 deletions
diff --git a/core/src/main/kotlin/pages/ContentNodes.kt b/core/src/main/kotlin/pages/ContentNodes.kt
index 7b702841..95b7b371 100644
--- a/core/src/main/kotlin/pages/ContentNodes.kt
+++ b/core/src/main/kotlin/pages/ContentNodes.kt
@@ -46,7 +46,6 @@ data class ContentHeader(
override val extra: PropertyContainer<ContentNode> = PropertyContainer.empty()
) : ContentComposite {
constructor(level: Int, c: ContentComposite) : this(c.children, level, c.dci, c.sourceSets, c.style, c.extra)
-
override fun withNewExtras(newExtras: PropertyContainer<ContentNode>): ContentHeader = copy(extra = newExtras)
}
@@ -226,6 +225,8 @@ enum class ContentStyle : Style {
object CommentTable: Style
+object MultimoduleTable: Style
+
fun ContentNode.dfs(predicate: (ContentNode) -> Boolean): ContentNode? = if (predicate(this)) {
this
} else {
diff --git a/core/src/main/kotlin/pages/PageNodes.kt b/core/src/main/kotlin/pages/PageNodes.kt
index 32b2846e..b28e36d6 100644
--- a/core/src/main/kotlin/pages/PageNodes.kt
+++ b/core/src/main/kotlin/pages/PageNodes.kt
@@ -163,6 +163,31 @@ fun PageNode.asSequence(): Sequence<PageNode> = sequence {
children.asSequence().flatMap { it.asSequence() }.forEach { yield(it) }
}
+class MultimoduleRootPageNode(
+ override val name: String,
+ override val dri: Set<DRI>,
+ override val content: ContentNode,
+ override val embeddedResources: List<String> = emptyList()
+) : RootPageNode(), ContentPage {
+
+ override val children: List<PageNode> = emptyList()
+
+ override val documentable: Documentable? = null
+
+ override fun modified(name: String, children: List<PageNode>): RootPageNode =
+ MultimoduleRootPageNode(name, dri, content, embeddedResources)
+
+ override fun modified(
+ name: String,
+ content: ContentNode,
+ dri: Set<DRI>,
+ embeddedResources: List<String>,
+ children: List<PageNode>
+ ) =
+ if (name == this.name && content === this.content && embeddedResources === this.embeddedResources && children shallowEq this.children) this
+ else MultimoduleRootPageNode(name, dri, content, embeddedResources)
+}
+
inline fun <reified T: PageNode> PageNode.children() = children.filterIsInstance<T>()
private infix fun <T> List<T>.shallowEq(other: List<T>) =