From dc752989295b7a8831c378973f4daa15d985d5f1 Mon Sep 17 00:00:00 2001 From: Ignat Beresnev Date: Thu, 3 Feb 2022 20:24:13 +0300 Subject: [PATCH] Utilize the new custom doc tag extension API for mathjax --- plugins/mathjax/api/mathjax.api | 7 +++++++ plugins/mathjax/build.gradle.kts | 3 ++- .../mathjax/src/main/kotlin/MathjaxPlugin.kt | 21 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/plugins/mathjax/api/mathjax.api b/plugins/mathjax/api/mathjax.api index 47612ecb78..a3a15839a0 100644 --- a/plugins/mathjax/api/mathjax.api +++ b/plugins/mathjax/api/mathjax.api @@ -1,8 +1,15 @@ public final class org/jetbrains/dokka/mathjax/MathjaxPlugin : org/jetbrains/dokka/plugability/DokkaPlugin { public fun ()V + public final fun getMathjaxTagContentProvider ()Lorg/jetbrains/dokka/plugability/Extension; public final fun getTransformer ()Lorg/jetbrains/dokka/plugability/Extension; } +public final class org/jetbrains/dokka/mathjax/MathjaxTagContentProvider : org/jetbrains/dokka/base/transformers/pages/tags/CustomTagContentProvider { + public static final field INSTANCE Lorg/jetbrains/dokka/mathjax/MathjaxTagContentProvider; + public fun contentForBrief (Lorg/jetbrains/dokka/base/translators/documentables/PageContentBuilder$DocumentableContentBuilder;Lorg/jetbrains/dokka/DokkaConfiguration$DokkaSourceSet;Lorg/jetbrains/dokka/model/doc/CustomTagWrapper;)V + public fun contentForDescription (Lorg/jetbrains/dokka/base/translators/documentables/PageContentBuilder$DocumentableContentBuilder;Lorg/jetbrains/dokka/DokkaConfiguration$DokkaSourceSet;Lorg/jetbrains/dokka/model/doc/CustomTagWrapper;)V +} + public final class org/jetbrains/dokka/mathjax/MathjaxTransformer : org/jetbrains/dokka/transformers/pages/PageTransformer { public static final field INSTANCE Lorg/jetbrains/dokka/mathjax/MathjaxTransformer; public fun invoke (Lorg/jetbrains/dokka/pages/RootPageNode;)Lorg/jetbrains/dokka/pages/RootPageNode; diff --git a/plugins/mathjax/build.gradle.kts b/plugins/mathjax/build.gradle.kts index 50e838a8cd..0b69a03827 100644 --- a/plugins/mathjax/build.gradle.kts +++ b/plugins/mathjax/build.gradle.kts @@ -1,9 +1,10 @@ import org.jetbrains.registerDokkaArtifactPublication dependencies { + implementation(project(":plugins:base")) + val jsoup_version: String by project testImplementation("org.jsoup:jsoup:$jsoup_version") - testImplementation(project(":plugins:base")) testImplementation(project(":plugins:base:base-test-utils")) testImplementation(project(":core:content-matcher-test-utils")) testImplementation(kotlin("test-junit")) diff --git a/plugins/mathjax/src/main/kotlin/MathjaxPlugin.kt b/plugins/mathjax/src/main/kotlin/MathjaxPlugin.kt index 636995856c..dd8d15ee09 100644 --- a/plugins/mathjax/src/main/kotlin/MathjaxPlugin.kt +++ b/plugins/mathjax/src/main/kotlin/MathjaxPlugin.kt @@ -2,6 +2,10 @@ package org.jetbrains.dokka.mathjax import org.jetbrains.dokka.CoreExtensions +import org.jetbrains.dokka.DokkaConfiguration +import org.jetbrains.dokka.base.DokkaBase +import org.jetbrains.dokka.base.transformers.pages.tags.CustomTagContentProvider +import org.jetbrains.dokka.base.translators.documentables.PageContentBuilder.DocumentableContentBuilder import org.jetbrains.dokka.model.doc.CustomTagWrapper import org.jetbrains.dokka.pages.ContentPage import org.jetbrains.dokka.pages.RootPageNode @@ -12,6 +16,12 @@ class MathjaxPlugin : DokkaPlugin() { val transformer by extending { CoreExtensions.pageTransformer with MathjaxTransformer } + + val mathjaxTagContentProvider by extending { + plugin().customTagContentProvider with MathjaxTagContentProvider order { + before(plugin().sinceKotlinTagContentProvider) + } + } } private const val ANNOTATION = "usesMathJax" @@ -29,4 +39,15 @@ object MathjaxTransformer : PageTransformer { ?.flatMap { it.children } .orEmpty() .any { (it as? CustomTagWrapper)?.name == ANNOTATION } +} + +object MathjaxTagContentProvider : CustomTagContentProvider { + override fun DocumentableContentBuilder.contentForDescription( + sourceSet: DokkaConfiguration.DokkaSourceSet, + customTag: CustomTagWrapper + ) { + if (customTag.name == ANNOTATION) { + comment(customTag.root, sourceSets = setOf(sourceSet)) + } + } } \ No newline at end of file