diff options
author | Ilya Ryzhenkov <orangy@jetbrains.com> | 2014-07-11 20:49:04 +0400 |
---|---|---|
committer | Ilya Ryzhenkov <orangy@jetbrains.com> | 2014-07-11 20:49:04 +0400 |
commit | 044308ba60a0d4462ccb7388f16ad17a31d7450d (patch) | |
tree | c93411f0670e29fe333962789c0df97b1602f7be /src/Analysis/AnalysisEnvironment.kt | |
parent | 8a4dad46b171c55dabc5f9be29e1261e1cc5928e (diff) | |
download | dokka-044308ba60a0d4462ccb7388f16ad17a31d7450d.tar.gz dokka-044308ba60a0d4462ccb7388f16ad17a31d7450d.tar.bz2 dokka-044308ba60a0d4462ccb7388f16ad17a31d7450d.zip |
Complete package migration and move files into folders.
Diffstat (limited to 'src/Analysis/AnalysisEnvironment.kt')
-rw-r--r-- | src/Analysis/AnalysisEnvironment.kt | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/Analysis/AnalysisEnvironment.kt b/src/Analysis/AnalysisEnvironment.kt new file mode 100644 index 00000000..346367ee --- /dev/null +++ b/src/Analysis/AnalysisEnvironment.kt @@ -0,0 +1,70 @@ +package org.jetbrains.dokka + +import org.jetbrains.jet.cli.common.messages.* +import com.intellij.openapi.* +import org.jetbrains.jet.cli.jvm.compiler.* +import org.jetbrains.jet.lang.resolve.* +import org.jetbrains.jet.lang.psi.* +import java.io.File +import org.jetbrains.jet.config.* +import org.jetbrains.jet.cli.common.* +import org.jetbrains.jet.cli.jvm.* +import com.intellij.openapi.util.* + +public class AnalysisEnvironment(val messageCollector: MessageCollector, body: AnalysisEnvironment.() -> Unit = {}) : Disposable { + val configuration = CompilerConfiguration(); + + { + configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector) + body() + } + + private fun withContext<T>(processor: (JetCoreEnvironment, BindingContext) -> T): T { + val environment = JetCoreEnvironment.createForProduction(this, configuration) + val result = environment.analyze(messageCollector) + return processor(environment, result) + } + + public fun withContext<T>(processor: (BindingContext) -> T): T { + return withContext { environment, context -> processor(context) } + } + + public fun streamFiles<T>(processor: (BindingContext, JetFile) -> T): Stream<T> { + return withContext { environment, context -> + environment.getSourceFiles().stream().map { file -> processor(context, file) } + } + } + + public fun processFiles<T>(processor: (BindingContext, JetFile) -> T): List<T> { + return withContext { environment, context -> + environment.getSourceFiles().map { file -> processor(context, file) } + } + } + + public fun processFilesFlat<T>(processor: (BindingContext, JetFile) -> List<T>): List<T> { + return withContext { environment, context -> + environment.getSourceFiles().flatMap { file -> processor(context, file) } + } + } + + public val classpath: List<File> + get() = configuration.get(JVMConfigurationKeys.CLASSPATH_KEY) ?: listOf() + + public fun addClasspath(list: List<File>) { + configuration.addAll(JVMConfigurationKeys.CLASSPATH_KEY, list) + } + + public fun addClasspath(file: File) { + configuration.add(JVMConfigurationKeys.CLASSPATH_KEY, file) + } + + public val sources: List<String> + get() = configuration.get(CommonConfigurationKeys.SOURCE_ROOTS_KEY) ?: listOf() + public fun addSources(list: List<String>) { + configuration.addAll(CommonConfigurationKeys.SOURCE_ROOTS_KEY, list) + } + + public override fun dispose() { + Disposer.dispose(this) + } +}
\ No newline at end of file |