From 3de1182033ca5a5db374e16a6ab3555627faa79b Mon Sep 17 00:00:00 2001 From: Szymon Świstun Date: Mon, 16 Mar 2020 13:08:29 +0100 Subject: Add default values for parameters --- core/src/main/kotlin/model/defaultValues.kt | 18 ++++++++++++++++++ .../main/kotlin/model/properties/PropertyContainer.kt | 5 +++-- .../transformers/pages/PageTransformerBuilders.kt | 6 +++--- 3 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 core/src/main/kotlin/model/defaultValues.kt (limited to 'core/src/main/kotlin') diff --git a/core/src/main/kotlin/model/defaultValues.kt b/core/src/main/kotlin/model/defaultValues.kt new file mode 100644 index 00000000..63b69cbb --- /dev/null +++ b/core/src/main/kotlin/model/defaultValues.kt @@ -0,0 +1,18 @@ +package org.jetbrains.dokka.model + +import org.jetbrains.dokka.model.properties.ExtraProperty +import org.jetbrains.dokka.model.properties.MergeStrategy +import java.lang.IllegalStateException + +class DefaultValue(val value: String): ExtraProperty { + companion object : ExtraProperty.Key { + override fun mergeStrategyFor(left: DefaultValue, right: DefaultValue): MergeStrategy = if (left.value == right.value) + MergeStrategy.Replace(left) + else + MergeStrategy.Fail {throw IllegalStateException("Default values need to be the same")} + + } + + override val key: ExtraProperty.Key + get() = Companion +} \ No newline at end of file diff --git a/core/src/main/kotlin/model/properties/PropertyContainer.kt b/core/src/main/kotlin/model/properties/PropertyContainer.kt index 5ea42e42..107bede5 100644 --- a/core/src/main/kotlin/model/properties/PropertyContainer.kt +++ b/core/src/main/kotlin/model/properties/PropertyContainer.kt @@ -15,12 +15,13 @@ class PropertyContainer internal constructor( } inline fun allOfType(): List = map.values.filterIsInstance() - fun addAll(vararg extras: ExtraProperty): PropertyContainer = + fun addAll(extras: Collection>): PropertyContainer = PropertyContainer(map + extras.map { p -> p.key to p }) companion object { fun empty(): PropertyContainer = PropertyContainer(emptyMap()) - fun withAll(vararg extras: ExtraProperty) = empty().addAll(*extras) + fun withAll(vararg extras: ExtraProperty) = empty().addAll(extras.toList()) + fun withAll(extras: Collection>) = empty().addAll(extras) } } diff --git a/core/src/main/kotlin/transformers/pages/PageTransformerBuilders.kt b/core/src/main/kotlin/transformers/pages/PageTransformerBuilders.kt index 89b22c19..291b72ef 100644 --- a/core/src/main/kotlin/transformers/pages/PageTransformerBuilders.kt +++ b/core/src/main/kotlin/transformers/pages/PageTransformerBuilders.kt @@ -3,15 +3,15 @@ package org.jetbrains.dokka.transformers.pages import org.jetbrains.dokka.pages.PageNode import org.jetbrains.dokka.pages.RootPageNode -fun pageScanner(block: PageNode.() -> Unit) = object : PageNodeTransformer { +fun pageScanner(block: PageNode.() -> Unit) = object : PageTransformer { override fun invoke(input: RootPageNode): RootPageNode = input.invokeOnAll(block) as RootPageNode } -fun pageMapper(block: PageNode.() -> PageNode) = object : PageNodeTransformer { +fun pageMapper(block: PageNode.() -> PageNode) = object : PageTransformer { override fun invoke(input: RootPageNode): RootPageNode = input.alterChildren(block) as RootPageNode } -fun pageStructureTransformer(block: RootPageNode.() -> RootPageNode) = object : PageNodeTransformer { +fun pageStructureTransformer(block: RootPageNode.() -> RootPageNode) = object : PageTransformer { override fun invoke(input: RootPageNode): RootPageNode = block(input) } -- cgit