diff options
author | Simon Ogorodnik <Simon.Ogorodnik@jetbrains.com> | 2018-01-07 01:49:34 +0300 |
---|---|---|
committer | Simon Ogorodnik <Simon.Ogorodnik@jetbrains.com> | 2018-01-07 01:49:34 +0300 |
commit | a06d6a8451967120ddf369ada724c837430507f4 (patch) | |
tree | 22fc8c28cb30356303af1ff817cea3a1ca7d53a2 /core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt | |
parent | 66ca7710e79197973d0d1d28031a168ed8e474c5 (diff) | |
download | dokka-a06d6a8451967120ddf369ada724c837430507f4.tar.gz |
Show type parameters substitution in class hierarchy
Diffstat (limited to 'core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt')
-rw-r--r-- | core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt index 02d0b3a79..d92eb2c82 100644 --- a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt +++ b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt @@ -190,9 +190,45 @@ class JavaLayoutHtmlFormatOutputBuilder( } ) + fun FlowContent.qualifiedTypeReference(node: DocumentationNode) { + if (node.kind in classLike) { + a(href = uriProvider.linkTo(node, uri)) { + +node.qualifiedName() + } + return + } + + val targetLink = node.links.single() + + if (targetLink.kind == NodeKind.TypeParameter) { + +node.name + return + } + + val href = if (targetLink.kind == NodeKind.ExternalLink) + targetLink.name + else + uriProvider.linkTo(targetLink, uri) + + a(href = href) { + +node.qualifiedNameFromType() + } + val typeParameters = node.details(NodeKind.Type) + if (typeParameters.isNotEmpty()) { + +"<" + typeParameters.forEach { + if (it != typeParameters.first()) { + +", " + } + qualifiedTypeReference(it) + } + +">" + } + } + fun FlowContent.classHierarchy(node: DocumentationNode) { - val superclasses = generateSequence(node) { it.superclass }.toList().asReversed() + val superclasses = generateSequence(node.superclass) { it.links.single().superclass }.toList().asReversed() + node table { superclasses.forEach { tr { @@ -202,7 +238,7 @@ class JavaLayoutHtmlFormatOutputBuilder( } } td { - a(href = uriProvider.linkTo(it, uri)) { +it.qualifiedName() } + qualifiedTypeReference(it) } } } |