diff options
author | Filip Zybała <fzybala@virtuslab.com> | 2020-03-17 09:30:24 +0100 |
---|---|---|
committer | Paweł Marks <Kordyjan@users.noreply.github.com> | 2020-03-25 13:19:31 +0100 |
commit | ba16f209faaf02e3300f2c04fec6c9e5b9ebc152 (patch) | |
tree | 2020e93477be4beacdfadd1917ec75f8b0b66c20 | |
parent | 9110dbc70e42d10c56d1e080fdaeecd1ea13d84f (diff) | |
download | dokka-ba16f209faaf02e3300f2c04fec6c9e5b9ebc152.tar.gz dokka-ba16f209faaf02e3300f2c04fec6c9e5b9ebc152.tar.bz2 dokka-ba16f209faaf02e3300f2c04fec6c9e5b9ebc152.zip |
Refactored extension method and signature builder. Added indentation to class signature.
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() }, |