diff options
author | Kamil Doległo <kamilok1965@interia.pl> | 2020-02-26 17:04:53 +0100 |
---|---|---|
committer | Paweł Marks <Kordyjan@users.noreply.github.com> | 2020-02-27 10:51:51 +0100 |
commit | 3aadd4c85e55ab8321bd3230ffd975cc85e394a8 (patch) | |
tree | 41d47b243b6dfc1d6dbedb53b3972a606c548513 | |
parent | f2c477f4f7126d462e1e42a6118355431bff9af6 (diff) | |
download | dokka-3aadd4c85e55ab8321bd3230ffd975cc85e394a8.tar.gz dokka-3aadd4c85e55ab8321bd3230ffd975cc85e394a8.tar.bz2 dokka-3aadd4c85e55ab8321bd3230ffd975cc85e394a8.zip |
Remove unneeded DSLMarker, fix bugs in PageCreator, add new ContentKinds
3 files changed, 44 insertions, 45 deletions
diff --git a/core/src/main/kotlin/pages/ContentNodes.kt b/core/src/main/kotlin/pages/ContentNodes.kt index 7cf0e7b8..d6d6f17c 100644 --- a/core/src/main/kotlin/pages/ContentNodes.kt +++ b/core/src/main/kotlin/pages/ContentNodes.kt @@ -119,7 +119,7 @@ interface Style interface Kind enum class ContentKind : Kind { - Comment, Functions, Parameters, Properties, Classes, Packages, Symbol, Sample, Main + Comment, Constructors, Functions, Parameters, Properties, Classlikes, Packages, Symbol, Sample, Main } enum class TextStyle : Style { diff --git a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt index d6880f01..03a28ceb 100644 --- a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt +++ b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt @@ -1,6 +1,7 @@ package org.jetbrains.dokka.base.translators.documentables import org.jetbrains.dokka.base.transformers.pages.comments.CommentsToContentConverter +import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.model.* import org.jetbrains.dokka.model.Enum import org.jetbrains.dokka.model.Function @@ -14,35 +15,31 @@ open class DefaultPageCreator( ) { protected open val contentBuilder = PageContentBuilder(commentsToContentConverter, logger) - open fun pageForModule(m: Module): ModulePageNode = - ModulePageNode(m.name.ifEmpty { "root" }, contentForModule(m), m, m.packages.map { pageForPackage(it) }) + open fun pageForModule(m: Module) = + ModulePageNode(m.name.ifEmpty { "<root>" }, contentForModule(m), m, m.packages.map(::pageForPackage)) - open fun pageForPackage(p: Package): PackagePageNode = - PackagePageNode(p.name, contentForPackage(p), setOf(p.dri), p, - p.classlikes.map { pageForClasslike(it) } + - p.functions.map { pageForMember(it) } + - p.packages.map { pageForPackage(it) }) + open fun pageForPackage(p: Package): PackagePageNode = PackagePageNode( + p.name, contentForPackage(p), setOf(p.dri), p, + p.classlikes.map(::pageForClasslike) + + p.functions.map(::pageForFunction) + + p.packages.map(::pageForPackage) + ) open fun pageForClasslike(c: Classlike): ClasslikePageNode { - val constructors = when (c) { - is Class -> c.constructors - is Enum -> c.constructors - else -> emptyList() - } - - return ClasslikePageNode(c.name.orEmpty(), contentForClasslike(c), setOf(c.dri), c, - constructors.map { pageForMember(it) } + - c.classlikes.map { pageForClasslike(it) } + - c.functions.map { pageForMember(it) }) + val constructors = if (c is WithConstructors) c.constructors else emptyList() + + return ClasslikePageNode( + c.name.orEmpty(), contentForClasslike(c), setOf(c.dri), c, + constructors.map(::pageForFunction) + + c.classlikes.map(::pageForClasslike) + + c.functions.map(::pageForFunction) + ) } - open fun pageForMember(c: Callable): MemberPageNode = when (c) { - is Function -> MemberPageNode(c.name, contentForFunction(c), setOf(c.dri), c) - else -> throw IllegalStateException("$c should not be present here") - } + open fun pageForFunction(f: Function) = MemberPageNode(f.name, contentForFunction(f), setOf(f.dri), f) protected open fun contentForModule(m: Module) = contentBuilder.contentFor(m) { - header(1) { text("root") } + header(1) { text(m.name) } block("Packages", 2, ContentKind.Packages, m.packages, m.platformData.toSet()) { link(it.name, it.dri) } @@ -52,15 +49,27 @@ open class DefaultPageCreator( protected open fun contentForPackage(p: Package) = contentBuilder.contentFor(p) { header(1) { text("Package ${p.name}") } - block("Types", 2, ContentKind.Properties, p.classlikes, p.platformData.toSet()) { + contentForScope(p, p.dri, p.platformData) + } + + protected open fun PageContentBuilder.DocumentableContentBuilder.contentForScope( + s: WithScope, + dri: DRI, + platformData: List<PlatformData> + ) { + block("Types", 2, ContentKind.Classlikes, s.classlikes, platformData.toSet()) { link(it.name.orEmpty(), it.dri) text(it.briefDocTagString) } - block("Functions", 2, ContentKind.Functions, p.functions, p.platformData.toSet()) { + block("Functions", 2, ContentKind.Functions, s.functions, platformData.toSet()) { link(it.name, it.dri) signature(it) text(it.briefDocTagString) } + block("Properties", 2, ContentKind.Properties, s.properties, platformData.toSet()) { + link(it.name, it.dri) + text(it.briefDocTagString) + } } protected open fun contentForClasslike(c: Classlike) = contentBuilder.contentFor(c) { @@ -79,26 +88,17 @@ open class DefaultPageCreator( contentForComments(c) if (c is WithConstructors) { - block("Constructors", 2, ContentKind.Functions, c.constructors, c.platformData.toSet()) { + block("Constructors", 2, ContentKind.Constructors, c.constructors, c.platformData.toSet()) { link(it.name, it.dri) signature(it) text(it.briefDocTagString) } } - block("Functions", 2, ContentKind.Functions, c.functions, c.platformData.toSet()) { - link(it.name, it.dri) - signature(it) - text(it.briefDocTagString) - } - - block("Properties", 2, ContentKind.Properties, c.properties, c.platformData.toSet()) { - link(it.name, it.dri) - text(it.briefDocTagString) - } + contentForScope(c, c.dri, c.platformData) } - protected open fun contentForComments(d: Documentable) = contentBuilder.contentFor(d) { + protected open fun PageContentBuilder.DocumentableContentBuilder.contentForComments(d: Documentable) = // TODO: this probably needs fixing d.documentation.forEach { _, documentationNode -> documentationNode.children.forEach { @@ -110,7 +110,7 @@ open class DefaultPageCreator( text("\n") } } - } + protected open fun contentForFunction(f: Function) = contentBuilder.contentFor(f) { header(1) { text(f.name) } diff --git a/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt b/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt index 588d9cb8..6d73bfdc 100644 --- a/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt +++ b/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt @@ -12,7 +12,6 @@ import org.jetbrains.dokka.utilities.DokkaLogger @DslMarker annotation class ContentBuilderMarker -@ContentBuilderMarker open class PageContentBuilder( val commentsConverter: CommentsToContentConverter, val logger: DokkaLogger @@ -71,7 +70,7 @@ open class PageContentBuilder( ) { contents += ContentHeader( level, - this@PageContentBuilder.contentFor(mainDRI, mainPlatformData, kind, styles, extras, block) + contentFor(mainDRI, mainPlatformData, kind, styles, extras, block) ) } @@ -121,7 +120,7 @@ open class PageContentBuilder( contents += ContentTable( emptyList(), elements.map { - this@PageContentBuilder.contentFor(it, platformData, kind, styles, extras) { + contentFor(it, platformData, kind, styles, extras) { link(it.classNames ?: "", it) } }, @@ -197,7 +196,7 @@ open class PageContentBuilder( block: DocumentableContentBuilder.() -> Unit ) { contents += ContentDRILink( - this@PageContentBuilder.contentFor(mainDRI, platformData, kind, styles, extras, block).children, + contentFor(mainDRI, platformData, kind, styles, extras, block).children, address, DCI(setOf(mainDRI), kind), platformData @@ -211,7 +210,7 @@ open class PageContentBuilder( styles: Set<Style> = mainStyles, extras: Set<Extra> = mainExtras ) { - val content = this@PageContentBuilder.commentsConverter.buildContent( + val content = commentsConverter.buildContent( docTag, DCI(setOf(mainDRI), kind), platformData @@ -226,7 +225,7 @@ open class PageContentBuilder( styles: Set<Style> = mainStyles, extras: Set<Extra> = mainExtras, block: DocumentableContentBuilder.() -> Unit - ): ContentGroup = this@PageContentBuilder.contentFor(dri, platformData, kind, styles, extras, block) + ): ContentGroup = contentFor(dri, platformData, kind, styles, extras, block) protected fun createText( text: String, @@ -243,7 +242,7 @@ open class PageContentBuilder( else if (t.constructorNamePathSegments.isNotEmpty() && t.dri == null) text(t.toString()) else { - this@PageContentBuilder.logger.error("type $t cannot be resolved") + logger.error("type $t cannot be resolved") text("???") } list(t.arguments, prefix = "<", suffix = ">") { |