Add subclasses info
diff --git a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
index 84778d0..02d0b3a 100644
--- a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
+++ b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
@@ -8,7 +8,6 @@
import org.jetbrains.dokka.LanguageService.RenderMode.SUMMARY
import org.jetbrains.dokka.NodeKind.Companion.classLike
import java.net.URI
-import java.net.URLEncoder
class JavaLayoutHtmlFormatOutputBuilder(
@@ -210,6 +209,36 @@
}
}
+ private fun FlowContent.subclasses(inheritors: List<DocumentationNode>, direct: Boolean) {
+ if (inheritors.isEmpty()) return
+ div {
+ table {
+ thead {
+ tr {
+ td {
+ if (direct)
+ +"Known Direct Subclasses"
+ else
+ +"Known Indirect Subclasses"
+ }
+ }
+ }
+ tbody {
+ inheritors.forEach {
+ tr {
+ td {
+ a(href = uriProvider.linkTo(it, uri)) { +it.classNodeNameWithOuterClass() }
+ }
+ td {
+ metaMarkup(it.summary)
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
fun appendClassLike(node: DocumentationNode) = templateService.composePage(
listOf(node),
htmlConsumer,
@@ -221,6 +250,15 @@
pre { renderedSignature(node, FULL) }
classHierarchy(node)
+ val inheritors = generateSequence(node.inheritors) { inheritors ->
+ inheritors
+ .flatMap { it.inheritors }
+ .takeUnless { it.isEmpty() }
+ }
+ subclasses(inheritors.first(), true)
+ subclasses(inheritors.drop(1).flatten().toList(), false)
+
+
metaMarkup(node.content)
h2 { +"Summary" }
@@ -396,7 +434,8 @@
is ContentParagraph -> p { appendContent(content.children) }
is ContentNodeLink -> {
- a(href = content.node?.let { uriProvider.linkTo(it, uri) } ?: "#unresolved") { appendContent(content.children) }
+ a(href = content.node?.let { uriProvider.linkTo(it, uri) }
+ ?: "#unresolved") { appendContent(content.children) }
}
is ContentExternalLink -> {
a(href = content.href) { appendContent(content.children) }
diff --git a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlPackageListService.kt b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlPackageListService.kt
index 398758f..1a0763f 100644
--- a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlPackageListService.kt
+++ b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlPackageListService.kt
@@ -5,7 +5,7 @@
import org.jetbrains.dokka.NodeKind
import org.jetbrains.dokka.PackageListService
-class JavaLayoutHtmlPackageListService: PackageListService {
+class JavaLayoutHtmlPackageListService : PackageListService {
private fun StringBuilder.appendParam(name: String, value: String) {
append(DOKKA_PARAM_PREFIX)