From 55fbf4f5ce051396de00b02dad3f3c57368d3685 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Tue, 27 Dec 2016 16:07:17 +0300 Subject: Drop import samples.* for website-samples --- .../KotlinWebsiteSampleProcessingService.kt | 21 ++++++++++++++++++--- .../KotlinWebSiteRunnableSamplesFormatTest.kt | 5 +++++ core/testdata/format/website-samples/dropImport.kt | 12 ++++++++++++ core/testdata/format/website-samples/dropImport.md | 22 ++++++++++++++++++++++ 4 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 core/testdata/format/website-samples/dropImport.kt create mode 100644 core/testdata/format/website-samples/dropImport.md diff --git a/core/src/main/kotlin/Samples/KotlinWebsiteSampleProcessingService.kt b/core/src/main/kotlin/Samples/KotlinWebsiteSampleProcessingService.kt index 648a6b67..baf44904 100644 --- a/core/src/main/kotlin/Samples/KotlinWebsiteSampleProcessingService.kt +++ b/core/src/main/kotlin/Samples/KotlinWebsiteSampleProcessingService.kt @@ -2,10 +2,9 @@ package org.jetbrains.dokka.Samples import com.google.inject.Inject import com.intellij.psi.PsiElement -import org.jetbrains.dokka.DocumentationOptions -import org.jetbrains.dokka.DokkaLogger -import org.jetbrains.dokka.DokkaResolutionFacade +import org.jetbrains.dokka.* import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.resolve.ImportPath open class KotlinWebsiteSampleProcessingService @Inject constructor(options: DocumentationOptions, @@ -65,6 +64,22 @@ open class KotlinWebsiteSampleProcessingService return sampleBuilder.text } + val importsToIgnore = arrayOf("samples.*").map(::ImportPath) + + override fun processImports(psiElement: PsiElement): ContentBlockCode { + val psiFile = psiElement.containingFile + if (psiFile is KtFile) { + return ContentBlockCode("kotlin").apply { + psiFile.importList?.let { + it.children.filter { + it !is KtImportDirective || it.importPath !in importsToIgnore + }.forEach { append(ContentText(it.text)) } + } + } + } + return super.processImports(psiElement) + } + override fun processSampleBody(psiElement: PsiElement) = when (psiElement) { is KtDeclarationWithBody -> { val bodyExpression = psiElement.bodyExpression diff --git a/core/src/test/kotlin/format/KotlinWebSiteRunnableSamplesFormatTest.kt b/core/src/test/kotlin/format/KotlinWebSiteRunnableSamplesFormatTest.kt index 1f514932..742d2908 100644 --- a/core/src/test/kotlin/format/KotlinWebSiteRunnableSamplesFormatTest.kt +++ b/core/src/test/kotlin/format/KotlinWebSiteRunnableSamplesFormatTest.kt @@ -7,6 +7,11 @@ import org.junit.Test class KotlinWebSiteRunnableSamplesFormatTest { private val kwsService = KotlinWebsiteRunnableSamplesFormatService(InMemoryLocationService, KotlinLanguageService()) + + @Test fun dropImport() { + verifyKWSNodeByName("dropImport", "foo") + } + @Test fun sample() { verifyKWSNodeByName("sample", "foo") } diff --git a/core/testdata/format/website-samples/dropImport.kt b/core/testdata/format/website-samples/dropImport.kt new file mode 100644 index 00000000..7b8d9f4e --- /dev/null +++ b/core/testdata/format/website-samples/dropImport.kt @@ -0,0 +1,12 @@ +import samples.* +import some.* + +/** + * @sample example1 + */ +fun foo() { +} + +fun example1() { + +} \ No newline at end of file diff --git a/core/testdata/format/website-samples/dropImport.md b/core/testdata/format/website-samples/dropImport.md new file mode 100644 index 00000000..13c8fb79 --- /dev/null +++ b/core/testdata/format/website-samples/dropImport.md @@ -0,0 +1,22 @@ +--- +title: foo - test +layout: api +--- + +
test / foo
+ +# foo + +
fun foo(): Unit
+
+ +``` kotlin +import some.* +fun main(args: Array) { +//sampleStart + +//sampleEnd +} +``` + +
-- cgit