aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilip Zybała <fzybala@virtuslab.com>2020-03-17 09:30:24 +0100
committerPaweł Marks <Kordyjan@users.noreply.github.com>2020-03-25 13:19:31 +0100
commitba16f209faaf02e3300f2c04fec6c9e5b9ebc152 (patch)
tree2020e93477be4beacdfadd1917ec75f8b0b66c20
parent9110dbc70e42d10c56d1e080fdaeecd1ea13d84f (diff)
downloaddokka-ba16f209faaf02e3300f2c04fec6c9e5b9ebc152.tar.gz
dokka-ba16f209faaf02e3300f2c04fec6c9e5b9ebc152.tar.bz2
dokka-ba16f209faaf02e3300f2c04fec6c9e5b9ebc152.zip
Refactored extension method and signature builder. Added indentation to class signature.
-rw-r--r--core/src/main/kotlin/model/aditionalExtras.kt6
-rw-r--r--core/src/main/kotlin/pages/ContentNodes.kt2
-rw-r--r--plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt3
-rw-r--r--plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt16
-rw-r--r--plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt31
5 files changed, 28 insertions, 30 deletions
diff --git a/core/src/main/kotlin/model/aditionalExtras.kt b/core/src/main/kotlin/model/aditionalExtras.kt
index 75f5f69a..853edd64 100644
--- a/core/src/main/kotlin/model/aditionalExtras.kt
+++ b/core/src/main/kotlin/model/aditionalExtras.kt
@@ -37,8 +37,8 @@ class Annotations(val content: List<Annotation>) : ExtraProperty<Documentable> {
}
}
-object PrimaryConstructorExtra: ExtraProperty<Documentable> {
- object PrimaryConstructorExtraKey: ExtraProperty.Key<Documentable, PrimaryConstructorExtra>
+object PrimaryConstructorExtra: ExtraProperty<DFunction> {
+ object PrimaryConstructorExtraKey: ExtraProperty.Key<DFunction, PrimaryConstructorExtra>
- override val key: ExtraProperty.Key<Documentable, *> = PrimaryConstructorExtraKey
+ override val key: ExtraProperty.Key<DFunction, *> = PrimaryConstructorExtraKey
} \ No newline at end of file
diff --git a/core/src/main/kotlin/pages/ContentNodes.kt b/core/src/main/kotlin/pages/ContentNodes.kt
index eeefc3b9..46a71bc0 100644
--- a/core/src/main/kotlin/pages/ContentNodes.kt
+++ b/core/src/main/kotlin/pages/ContentNodes.kt
@@ -171,7 +171,7 @@ enum class ContentKind : Kind {
}
enum class TextStyle : Style {
- Bold, Italic, Strong, Strikethrough, Paragraph, Block, Monospace
+ Bold, Italic, Strong, Strikethrough, Paragraph, Block, Monospace, Indented
}
fun ContentNode.dfs(predicate: (ContentNode) -> Boolean): ContentNode? = if (predicate(this)) {
diff --git a/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt b/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt
index 365405ed..7f953c57 100644
--- a/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt
+++ b/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt
@@ -199,6 +199,9 @@ open class HtmlRenderer(
}
override fun FlowContent.buildText(textNode: ContentText) {
+ when{
+ textNode.style.contains(TextStyle.Indented) -> consumer.onTagContentEntity(Entities.nbsp)
+ }
text(textNode.text)
}
diff --git a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
index 31cd0eca..8d925376 100644
--- a/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
+++ b/plugins/base/src/main/kotlin/signatures/KotlinSignatureProvider.kt
@@ -33,7 +33,7 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
private fun signature(c: DClasslike) = contentBuilder.contentFor(c, ContentKind.Symbol, setOf(TextStyle.Monospace)) {
platformText(c.visibility) { (it.takeIf { it !in ignoredVisibilities }?.name ?: "") + " " }
if (c is DClass) {
- if (c.extra[AdditionalModifiers.AdditionalKey]?.content?.contains(ExtraModifiers.DATA) == true) {
+ if (c.extra[AdditionalModifiers]?.content?.contains(ExtraModifiers.DATA) == true) {
text("data ")
} else {
text(c.modifier.name + " ")
@@ -47,15 +47,13 @@ class KotlinSignatureProvider(ctcc: CommentsToContentConverter, logger: DokkaLog
is DAnnotation -> text("annotation class ")
}
link(c.name!!, c.dri)
- if(c is Class){
+ if(c is DClass){
val pConstructor = c.constructors.singleOrNull() { it.extra[PrimaryConstructorExtra.PrimaryConstructorExtraKey] != null }
- if(pConstructor != null) {
- list(pConstructor.parameters, "(", ")", ",", pConstructor.platformData.toSet()){
- breakLine()
- text(it.name ?: "", styles = mainStyles.plus(TextStyle.Bold))
- text(": ")
- signatureForProjection(it.type)
- }
+ list(pConstructor?.parameters.orEmpty(), "(", ")", ",", pConstructor?.platformData.orEmpty().toSet()){
+ breakLine()
+ text(it.name ?: "", styles = mainStyles.plus(TextStyle.Bold).plus(TextStyle.Indented))
+ text(": ")
+ signatureForProjection(it.type)
}
}
if (c is WithSupertypes) {
diff --git a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt
index bd21f9df..c30d99b7 100644
--- a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt
+++ b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt
@@ -296,7 +296,9 @@ private class DokkaDescriptorVisitor( // TODO: close this class and make it priv
modifier = descriptor.modifier(),
generics = descriptor.typeParameters.map { it.toTypeParameter() },
platformData = listOf(platformData),
- extra = PropertyContainer.withAll(descriptor.additionalExtras(), descriptor.getAnnotations())
+ extra = PropertyContainer.withAll<DFunction>(descriptor.additionalExtras(), descriptor.getAnnotations()).let {
+ if(descriptor.isPrimary) { it + PrimaryConstructorExtra } else it
+ }
)
}
@@ -475,23 +477,18 @@ private class DokkaDescriptorVisitor( // TODO: close this class and make it priv
} else {
PlatformDependent(mapOf(platformData to DescriptorDocumentableSource(this)))
}
-
+
fun FunctionDescriptor.additionalExtras() = listOfNotNull(
- ExtraModifiers.DYNAMIC.takeIf { isDynamic() },
- ExtraModifiers.INFIX.takeIf { isInfix },
- ExtraModifiers.INLINE.takeIf { isInline },
- ExtraModifiers.SUSPEND.takeIf { isSuspend },
- ExtraModifiers.OPERATOR.takeIf { isOperator },
- ExtraModifiers.STATIC.takeIf { isJvmStaticInObjectOrClassOrInterface() },
- ExtraModifiers.TAILREC.takeIf { isTailrec },
- ExtraModifiers.EXTERNAL.takeIf { isExternal },
- ExtraModifiers.OVERRIDE.takeIf { DescriptorUtils.isOverride(this) }
- ).toProperty()
-
- inline fun <reified D : Documentable> ConstructorDescriptor.additionalExtras(): PropertyContainer<D> =
- if(this.isPrimary)
- (this as FunctionDescriptor).additionalExtras<D>() + PrimaryConstructorExtra
- else (this as FunctionDescriptor).additionalExtras()
+ ExtraModifiers.DYNAMIC.takeIf { isDynamic() },
+ ExtraModifiers.INFIX.takeIf { isInfix },
+ ExtraModifiers.INLINE.takeIf { isInline },
+ ExtraModifiers.SUSPEND.takeIf { isSuspend },
+ ExtraModifiers.OPERATOR.takeIf { isOperator },
+ ExtraModifiers.STATIC.takeIf { isJvmStaticInObjectOrClassOrInterface() },
+ ExtraModifiers.TAILREC.takeIf { isTailrec },
+ ExtraModifiers.EXTERNAL.takeIf { isExternal },
+ ExtraModifiers.OVERRIDE.takeIf { DescriptorUtils.isOverride(this) }
+ ).toProperty()
fun ClassDescriptor.additionalExtras() = listOfNotNull(
ExtraModifiers.DYNAMIC.takeIf { isDynamic() },