diff options
Diffstat (limited to 'plugins/mathjax')
-rw-r--r-- | plugins/mathjax/README.md | 27 | ||||
-rw-r--r-- | plugins/mathjax/api/mathjax.api | 18 | ||||
-rw-r--r-- | plugins/mathjax/build.gradle.kts | 34 | ||||
-rw-r--r-- | plugins/mathjax/src/main/kotlin/MathjaxPlugin.kt | 67 | ||||
-rw-r--r-- | plugins/mathjax/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin | 5 | ||||
-rw-r--r-- | plugins/mathjax/src/test/kotlin/MathjaxPluginTest.kt | 92 |
6 files changed, 0 insertions, 243 deletions
diff --git a/plugins/mathjax/README.md b/plugins/mathjax/README.md deleted file mode 100644 index a12095ee..00000000 --- a/plugins/mathjax/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# MathJax plugin - -[MathJax](https://docs.mathjax.org/) allows you to include mathematics in your web pages. The `mathjax` Dokka plugin -adds the ability to render mathematics found in source code comments. - -If MathJax plugin encounters the `@usesMathJax` KDoc tag, it adds `MathJax.js` (ver. 2) with `config=TeX-AMS_SVG` -to the generated HTML pages. - -Usage example: - -```kotlin -/** - * Some math \(\sqrt{3x-1}+(1+x)^2\) - * - * @usesMathJax - */ -class Foo {} -``` - -Note that the `@usesMathJax` tag is case-sensitive. - -The MathJax plugin is published to Maven Central as a -[separate artifact](https://mvnrepository.com/artifact/org.jetbrains.dokka/mathjax-plugin): - -```text -org.jetbrains.dokka:mathjax-plugin:1.9.10 -``` diff --git a/plugins/mathjax/api/mathjax.api b/plugins/mathjax/api/mathjax.api deleted file mode 100644 index da5caeb2..00000000 --- a/plugins/mathjax/api/mathjax.api +++ /dev/null @@ -1,18 +0,0 @@ -public final class org/jetbrains/dokka/mathjax/MathjaxPlugin : org/jetbrains/dokka/plugability/DokkaPlugin { - public fun <init> ()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 fun isApplicable (Lorg/jetbrains/dokka/model/doc/CustomTagWrapper;)Z -} - -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 deleted file mode 100644 index fba465aa..00000000 --- a/plugins/mathjax/build.gradle.kts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -import org.jetbrains.registerDokkaArtifactPublication - -plugins { - id("org.jetbrains.conventions.kotlin-jvm") - id("org.jetbrains.conventions.maven-publish") - id("org.jetbrains.conventions.base-unit-test") -} - -dependencies { - compileOnly(projects.core) - - implementation(projects.plugins.base) - - implementation(kotlin("reflect")) - - testImplementation(kotlin("test")) - testImplementation(libs.jsoup) - testImplementation(projects.core.contentMatcherTestUtils) - testImplementation(projects.core.testApi) - - symbolsTestConfiguration(project(path = ":subprojects:analysis-kotlin-symbols", configuration = "shadow")) - descriptorsTestConfiguration(project(path = ":subprojects:analysis-kotlin-descriptors", configuration = "shadow")) - testImplementation(projects.plugins.base.baseTestUtils) { - exclude(module = "analysis-kotlin-descriptors") - } -} - -registerDokkaArtifactPublication("mathjaxPlugin") { - artifactId = "mathjax-plugin" -} diff --git a/plugins/mathjax/src/main/kotlin/MathjaxPlugin.kt b/plugins/mathjax/src/main/kotlin/MathjaxPlugin.kt deleted file mode 100644 index 2a7ed6a4..00000000 --- a/plugins/mathjax/src/main/kotlin/MathjaxPlugin.kt +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -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 -import org.jetbrains.dokka.pages.WithDocumentables -import org.jetbrains.dokka.plugability.DokkaPlugin -import org.jetbrains.dokka.plugability.DokkaPluginApiPreview -import org.jetbrains.dokka.plugability.Extension -import org.jetbrains.dokka.plugability.PluginApiPreviewAcknowledgement -import org.jetbrains.dokka.transformers.pages.PageTransformer - -public class MathjaxPlugin : DokkaPlugin() { - - public val transformer: Extension<PageTransformer, *, *> by extending { - CoreExtensions.pageTransformer with MathjaxTransformer - } - - public val mathjaxTagContentProvider: Extension<CustomTagContentProvider, *, *> by extending { - plugin<DokkaBase>().customTagContentProvider with MathjaxTagContentProvider order { - before(plugin<DokkaBase>().sinceKotlinTagContentProvider) - } - } - - @OptIn(DokkaPluginApiPreview::class) - override fun pluginApiPreviewAcknowledgement(): PluginApiPreviewAcknowledgement = - PluginApiPreviewAcknowledgement -} - -private const val ANNOTATION = "usesMathJax" -internal const val LIB_PATH = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js?config=TeX-AMS_SVG&latest" - -public object MathjaxTransformer : PageTransformer { - - override fun invoke(input: RootPageNode): RootPageNode = input.transformContentPagesTree { - it.modified( - embeddedResources = it.embeddedResources + if (it.isNeedingMathjax) listOf(LIB_PATH) else emptyList() - ) - } - - private val ContentPage.isNeedingMathjax - get() = (this as WithDocumentables).documentables.any { it.documentation.values - .flatMap { it.children } - .any { (it as? CustomTagWrapper)?.name == ANNOTATION } } -} - -public object MathjaxTagContentProvider : CustomTagContentProvider { - - override fun isApplicable(customTag: CustomTagWrapper): Boolean = customTag.name == ANNOTATION - - override fun DocumentableContentBuilder.contentForDescription( - sourceSet: DokkaConfiguration.DokkaSourceSet, - customTag: CustomTagWrapper - ) { - comment(customTag.root, sourceSets = setOf(sourceSet)) - } -} diff --git a/plugins/mathjax/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin b/plugins/mathjax/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin deleted file mode 100644 index 4a9d7a9e..00000000 --- a/plugins/mathjax/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin +++ /dev/null @@ -1,5 +0,0 @@ -# -# Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. -# - -org.jetbrains.dokka.mathjax.MathjaxPlugin diff --git a/plugins/mathjax/src/test/kotlin/MathjaxPluginTest.kt b/plugins/mathjax/src/test/kotlin/MathjaxPluginTest.kt deleted file mode 100644 index 905684d2..00000000 --- a/plugins/mathjax/src/test/kotlin/MathjaxPluginTest.kt +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package mathjaxTest - -import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest -import org.jetbrains.dokka.mathjax.LIB_PATH -import org.jetbrains.dokka.mathjax.MathjaxPlugin -import org.jsoup.Jsoup -import utils.TestOutputWriterPlugin -import kotlin.test.Test -import kotlin.test.assertTrue - -class MathjaxPluginTest : BaseAbstractTest() { - @Test - fun noMathjaxTest() { - val configuration = dokkaConfiguration { - sourceSets { - sourceSet { - sourceRoots = listOf("src/main/kotlin/test/Test.kt") - } - } - } - val source = - """ - |/src/main/kotlin/test/Test.kt - |package example - | /** - | * Just a regular kdoc - | */ - | fun test(): String = "" - """.trimIndent() - val writerPlugin = TestOutputWriterPlugin() - testInline( - source, - configuration, - pluginOverrides = listOf(writerPlugin, MathjaxPlugin()) - ) { - renderingStage = { - _, _ -> Jsoup - .parse(writerPlugin.writer.contents.getValue("root/example/test.html")) - .head() - .select("link, script") - .let { - assertTrue(!it.`is`("[href=$LIB_PATH], [src=$LIB_PATH]")) - } - } - } - } - - @Test - fun usingMathjaxTest() { - val configuration = dokkaConfiguration { - sourceSets { - sourceSet { - sourceRoots = listOf("src/main/kotlin/test/Test.kt") - } - } - } - val math = "a^2 = b^2 + c^2" - val source = - """ - |/src/main/kotlin/test/Test.kt - |package example - | /** - | * @usesMathJax - | * - | * \($math\) - | */ - | fun test(): String = "" - """.trimIndent() - val writerPlugin = TestOutputWriterPlugin() - testInline( - source, - configuration, - pluginOverrides = listOf(writerPlugin, MathjaxPlugin()) - ) { - renderingStage = { _, _ -> - val parsed = Jsoup.parse(writerPlugin.writer.contents.getValue("root/example/test.html")) - - // Ensure the MathJax CDN is loaded - assertTrue(parsed.select("link, script").`is`("[href=$LIB_PATH], [src=$LIB_PATH]")) - - // Ensure the contents are displayed - assertTrue(parsed.select("p").any { - it.text().contains(math) - }) - } - } - } -} |