aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/Utilities
diff options
context:
space:
mode:
authorSimon Ogorodnik <Simon.Ogorodnik@jetbrains.com>2017-12-02 00:50:08 +0300
committerSimon Ogorodnik <Simon.Ogorodnik@jetbrains.com>2017-12-02 00:50:08 +0300
commit7acc52ba723eab08fe796fcfd68755e7f0eb6a66 (patch)
tree7760517756051bdaa14bdbb2ab61664ebc3993dc /core/src/main/kotlin/Utilities
parent1b722f7c61ea3405b8f33612044b28f0b4087406 (diff)
downloaddokka-7acc52ba723eab08fe796fcfd68755e7f0eb6a66.tar.gz
dokka-7acc52ba723eab08fe796fcfd68755e7f0eb6a66.tar.bz2
dokka-7acc52ba723eab08fe796fcfd68755e7f0eb6a66.zip
WIP: Refactoring, remove LocationService, rework FormatDescriptor
Diffstat (limited to 'core/src/main/kotlin/Utilities')
-rw-r--r--core/src/main/kotlin/Utilities/DokkaModules.kt46
1 files changed, 21 insertions, 25 deletions
diff --git a/core/src/main/kotlin/Utilities/DokkaModules.kt b/core/src/main/kotlin/Utilities/DokkaModules.kt
index dfb114ec..9db08010 100644
--- a/core/src/main/kotlin/Utilities/DokkaModules.kt
+++ b/core/src/main/kotlin/Utilities/DokkaModules.kt
@@ -4,6 +4,7 @@ import com.google.inject.Binder
import com.google.inject.Module
import com.google.inject.Provider
import com.google.inject.TypeLiteral
+import com.google.inject.binder.AnnotatedBindingBuilder
import com.google.inject.name.Names
import org.jetbrains.dokka.*
import org.jetbrains.dokka.Formats.FormatDescriptor
@@ -11,6 +12,7 @@ import org.jetbrains.dokka.Model.DescriptorSignatureProvider
import org.jetbrains.dokka.Samples.SampleProcessingService
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import java.io.File
+import kotlin.reflect.KClass
const val impliedPlatformsName = "impliedPlatforms"
@@ -22,12 +24,7 @@ class DokkaAnalysisModule(val environment: AnalysisEnvironment,
override fun configure(binder: Binder) {
binder.bind<DokkaLogger>().toInstance(logger)
- val descriptor = ServiceLocator.lookup<FormatDescriptor>("format", options.outputFormat)
- binder.bind<DescriptorSignatureProvider>().to(descriptor.descriptorSignatureProvider.java)
binder.registerCategory<LanguageService>("language")
- binder.bind<PackageDocumentationBuilder>().to(descriptor.packageDocumentationBuilderClass.java)
- binder.bind<JavaDocumentationBuilder>().to(descriptor.javaDocumentationBuilderClass.java)
- binder.bind<SampleProcessingService>().to(descriptor.sampleProcessingService.java)
val coreEnvironment = environment.createCoreEnvironment()
binder.bind<KotlinCoreEnvironment>().toInstance(coreEnvironment)
@@ -40,6 +37,9 @@ class DokkaAnalysisModule(val environment: AnalysisEnvironment,
binder.bind<DefaultPlatformsProvider>().toInstance(defaultPlatformsProvider)
binder.bind<NodeReferenceGraph>().toInstance(nodeReferenceGraph)
+
+ val descriptor = ServiceLocator.lookup<FormatDescriptor>("format", options.outputFormat)
+ descriptor.configureAnalysis(binder)
}
}
@@ -56,35 +56,26 @@ class DokkaOutputModule(val options: DocumentationOptions,
binder.bind(File::class.java).annotatedWith(Names.named("outputDir")).toInstance(File(options.outputDir))
- binder.bindNameAnnotated<LocationService, SingleFolderLocationService>("singleFolder")
- binder.bindNameAnnotated<FileLocationService, SingleFolderLocationService>("singleFolder")
- binder.bindNameAnnotated<LocationService, FoldersLocationService>("folders")
- binder.bindNameAnnotated<FileLocationService, FoldersLocationService>("folders")
+// binder.bindNameAnnotated<LocationService, SingleFolderLocationService>("singleFolder")
+// binder.bindNameAnnotated<FileLocationService, SingleFolderLocationService>("singleFolder")
+// binder.bindNameAnnotated<LocationService, FoldersLocationService>("folders")
+// binder.bindNameAnnotated<FileLocationService, FoldersLocationService>("folders")
// defaults
- binder.bind(LocationService::class.java).to(FoldersLocationService::class.java)
- binder.bind(FileLocationService::class.java).to(FoldersLocationService::class.java)
+// binder.bind(LocationService::class.java).to(FoldersLocationService::class.java)
+// binder.bind(FileLocationService::class.java).to(FoldersLocationService::class.java)
binder.registerCategory<OutlineFormatService>("outline")
binder.registerCategory<FormatService>("format")
binder.registerCategory<Generator>("generator")
- val descriptor = ServiceLocator.lookup<FormatDescriptor>("format", options.outputFormat)
-
- descriptor.outlineServiceClass?.let { clazz ->
- binder.bind(OutlineFormatService::class.java).to(clazz.java)
- }
- descriptor.formatServiceClass?.let { clazz ->
- binder.bind(FormatService::class.java).to(clazz.java)
- }
-
- binder.bind<Generator>().to(descriptor.generatorServiceClass.java)
-
- descriptor.packageListServiceClass?.let { binder.bind<PackageListService>().to(it.java) }
-
binder.bind<DocumentationOptions>().toInstance(options)
binder.bind<DokkaLogger>().toInstance(logger)
binder.bind(StringListType).annotatedWith(Names.named(impliedPlatformsName)).toInstance(options.impliedPlatforms)
+
+ val descriptor = ServiceLocator.lookup<FormatDescriptor>("format", options.outputFormat)
+
+ descriptor.configureOutput(binder)
}
}
@@ -100,4 +91,9 @@ private inline fun <reified Base : Any, reified T : Base> Binder.bindNameAnnotat
}
-inline fun <reified T: Any> Binder.bind() = bind(T::class.java)
+inline fun <reified T: Any> Binder.bind(): AnnotatedBindingBuilder<T> = bind(T::class.java)
+
+inline infix fun <reified T: Any, TKClass: KClass<out T>> AnnotatedBindingBuilder<T>.toOptional(kClass: TKClass?) =
+ kClass?.let { to(it.java) }
+
+inline infix fun <reified T: Any, TKClass: KClass<out T>> AnnotatedBindingBuilder<T>.toType(kClass: TKClass) = to(kClass.java)