Skip to content

Commit

Permalink
Run sample analysis from Dispatchers.Default
Browse files Browse the repository at this point in the history
  • Loading branch information
vmishenev committed Oct 21, 2022
1 parent beee4e5 commit a99eda3
Showing 1 changed file with 10 additions and 10 deletions.
@@ -1,6 +1,8 @@
package org.jetbrains.dokka.base.transformers.pages.samples

import com.intellij.psi.PsiElement
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet
import org.jetbrains.dokka.Platform
import org.jetbrains.dokka.analysis.AnalysisEnvironment
Expand All @@ -22,31 +24,29 @@ import org.jetbrains.kotlin.idea.kdoc.resolveKDocLink
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
import org.jetbrains.kotlin.utils.PathUtil

abstract class SamplesTransformer(val context: DokkaContext) : PageTransformer {

abstract fun processBody(psiElement: PsiElement): String
abstract fun processImports(psiElement: PsiElement): String

final override fun invoke(input: RootPageNode): RootPageNode {
final override fun invoke(input: RootPageNode): RootPageNode = runBlocking(Dispatchers.Default) { // to run from thread of Dispatchers.Default
val analysis = setUpAnalysis(context)
val kotlinPlaygroundScript =
"<script src=\"https://unpkg.com/kotlin-playground@1\"></script>"
val kotlinPlaygroundScript = "<script src=\"https://unpkg.com/kotlin-playground@1\"></script>"

return input.transformContentPagesTree { page ->
input.transformContentPagesTree { page ->
val samples = (page as? WithDocumentables)?.documentables?.flatMap {
it.documentation.entries.flatMap { entry ->
entry.value.children.filterIsInstance<Sample>().map { entry.key to it }
}
}

samples?.fold(page as ContentPage) { acc, (sampleSourceSet, sample) ->
acc.modified(
content = acc.content.addSample(page, sampleSourceSet, sample.name, analysis),
embeddedResources = acc.embeddedResources + kotlinPlaygroundScript
)
} ?: page
acc.modified(
content = acc.content.addSample(page, sampleSourceSet, sample.name, analysis),
embeddedResources = acc.embeddedResources + kotlinPlaygroundScript
)
} ?: page
}
}

Expand Down

0 comments on commit a99eda3

Please sign in to comment.