kdoc: change highlighter2 into doclet

This commit is contained in:
Stepan Koltsov
2012-06-25 23:55:29 +04:00
parent 8372ad7ec2
commit 631832b325
4 changed files with 14 additions and 8 deletions
@@ -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)
}
}
@@ -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);
}
}
@@ -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<Html2CompilerPlugin>().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")
@@ -175,7 +175,7 @@ abstract class KClassOrPackage(model: KModel, declarationDescriptor: Declaration
}
}
class KModel(val context: BindingContext, val config: KDocConfig, private val sources: List<JetFile>) {
class KModel(val context: BindingContext, val config: KDocConfig, val sources: List<JetFile>) {
// TODO generates java.lang.NoSuchMethodError: kotlin.util.namespace.hashMap(Ljet/TypeInfo;Ljet/TypeInfo;)Ljava/util/HashMap;
//val packages = sortedMap<String,KPackage>()
public val packageMap: SortedMap<String, KPackage> = TreeMap<String, KPackage>()