From 631832b325a84ce6de5bcc7ffb9b69c9c768a241 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Mon, 25 Jun 2012 23:55:29 +0400 Subject: [PATCH] kdoc: change highlighter2 into doclet --- .../src/main/kotlin/org/jetbrains/kotlin/doc/KDoc.kt | 7 ++++++- .../kotlin/org/jetbrains/kotlin/doc/KDocCompiler.kt | 2 -- .../kotlin/doc/highlighter2/Html2CompilerPlugin.kt | 11 +++++++---- .../org/jetbrains/kotlin/doc/model/KotlinModel.kt | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/KDoc.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/KDoc.kt index 2850fdf7181..59f0d4671c2 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/KDoc.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/KDoc.kt @@ -30,15 +30,20 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope import org.jetbrains.jet.lang.resolve.scopes.receivers.ExtensionReceiver import org.jetbrains.jet.util.slicedmap.WritableSlice import org.jetbrains.jet.lang.resolve.BindingContextUtils +import org.jetbrains.kotlin.doc.highlighter2.Html2CompilerPlugin /** Generates the Kotlin Documentation for the model */ class KDoc(protected arguments: KDocArguments) : KModelCompilerPlugin(arguments) { protected override fun processModel(model: KModel) { + val outputDir = File(arguments.apply().docOutputDir) + // TODO allow this to be configured; maybe we use configuration on the KotlinModule // to define what doclets to use? val generator = JavadocStyleHtmlDoclet() - val outputDir = File(arguments.apply().docOutputDir) generator.generate(model, outputDir) + + val srcGenerator = Html2CompilerPlugin(arguments) + srcGenerator.generate(model, outputDir) } } diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/KDocCompiler.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/KDocCompiler.kt index 5db711e9fee..0b73fa10ef9 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/KDocCompiler.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/KDocCompiler.kt @@ -29,8 +29,6 @@ class KDocCompiler() : K2JVMCompiler() { if (coreEnvironment != null) { val kdoc = KDoc(arguments as KDocArguments) val plugins = configuration.getCompilerPlugins() - val sourcePlugin = Html2CompilerPlugin(arguments as KDocArguments) - plugins.add(sourcePlugin) plugins.add(kdoc); } } diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/highlighter2/Html2CompilerPlugin.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/highlighter2/Html2CompilerPlugin.kt index 5e1fc5093d5..6a90073e8f4 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/highlighter2/Html2CompilerPlugin.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/highlighter2/Html2CompilerPlugin.kt @@ -15,9 +15,12 @@ import org.jetbrains.jet.internal.com.intellij.psi.PsiElement import org.jetbrains.jet.internal.com.intellij.psi.impl.source.tree.LeafPsiElement import org.jetbrains.jet.JetNodeTypes import org.jetbrains.jet.lexer.JetTokens +import org.jetbrains.kotlin.doc.Doclet +import org.jetbrains.kotlin.doc.model.KModel +import org.jetbrains.jet.lang.psi.JetFile -class Html2CompilerPlugin(private val compilerArguments: KDocArguments) : CompilerPlugin { +class Html2CompilerPlugin(private val compilerArguments: KDocArguments) : Doclet { private val docOutputRoot: File { @@ -51,7 +54,7 @@ class Html2CompilerPlugin(private val compilerArguments: KDocArguments) : Compil throw Exception("$file is not a child of any source roots $sourceDirPaths") } - override fun processFiles(context: CompilerPluginContext) { + override fun generate(model: KModel, outputDir: File) { srcOutputRoot.mkdirs() val css = javaClass().getClassLoader()!!.getResourceAsStream( @@ -62,12 +65,12 @@ class Html2CompilerPlugin(private val compilerArguments: KDocArguments) : Compil #() } - for (file in context.getFiles().requireNoNulls()) { + for (file in model.sources) { processFile(file) } } - private fun processFile(psiFile: PsiFile) { + private fun processFile(psiFile: JetFile) { val relativePath = fileToWrite(psiFile) val htmlFile = File(srcOutputRoot, relativePath.replaceFirst("\\.kt$", "") + ".html") diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt index caed823d377..136f3a91616 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/model/KotlinModel.kt @@ -175,7 +175,7 @@ abstract class KClassOrPackage(model: KModel, declarationDescriptor: Declaration } } -class KModel(val context: BindingContext, val config: KDocConfig, private val sources: List) { +class KModel(val context: BindingContext, val config: KDocConfig, val sources: List) { // TODO generates java.lang.NoSuchMethodError: kotlin.util.namespace.hashMap(Ljet/TypeInfo;Ljet/TypeInfo;)Ljava/util/HashMap; //val packages = sortedMap() public val packageMap: SortedMap = TreeMap()