diff options
author | Błażej Kardyś <bkardys@virtuslab.com> | 2020-05-27 01:16:48 +0200 |
---|---|---|
committer | Błażej Kardyś <bkardys@virtuslab.com> | 2020-06-04 11:26:05 +0200 |
commit | 6dc9498ca849645ecb4ec923bb7116b245dca706 (patch) | |
tree | 23022e6d6f3aea18b9e8efaaa482cafae9bee989 /core/src/main/kotlin/pages | |
parent | b614604effda51ca7c76c8901be78ced62b642b2 (diff) | |
download | dokka-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.kt | 3 | ||||
-rw-r--r-- | core/src/main/kotlin/pages/PageNodes.kt | 25 |
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>) = |