• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.jetbrains.dokka.Formats
2 
3 import com.google.inject.Binder
4 import org.jetbrains.dokka.*
5 import org.jetbrains.dokka.Utilities.bind
6 import org.jetbrains.dokka.Utilities.lazyBind
7 import org.jetbrains.dokka.Utilities.toOptional
8 import org.jetbrains.dokka.Utilities.toType
9 import kotlin.reflect.KClass
10 
11 
12 interface FormatDescriptorAnalysisComponent {
configureAnalysisnull13     fun configureAnalysis(binder: Binder)
14 }
15 
16 interface FormatDescriptorOutputComponent {
17     fun configureOutput(binder: Binder)
18 }
19 
20 interface FormatDescriptor : FormatDescriptorAnalysisComponent, FormatDescriptorOutputComponent
21 
22 
23 abstract class FileGeneratorBasedFormatDescriptor : FormatDescriptor {
24 
<lambda>null25     override fun configureOutput(binder: Binder): Unit = with(binder) {
26         bind<Generator>() toType NodeLocationAwareGenerator::class
27         bind<NodeLocationAwareGenerator>() toType generatorServiceClass
28 
29         bind<LanguageService>() toType languageServiceClass
30 
31         lazyBind<OutlineFormatService>() toOptional (outlineServiceClass)
32         lazyBind<FormatService>() toOptional formatServiceClass
33         lazyBind<PackageListService>() toOptional packageListServiceClass
34     }
35 
36     abstract val formatServiceClass: KClass<out FormatService>?
37     abstract val outlineServiceClass: KClass<out OutlineFormatService>?
38     abstract val generatorServiceClass: KClass<out FileGenerator>
39     abstract val packageListServiceClass: KClass<out PackageListService>?
40 
41     open val languageServiceClass: KClass<out LanguageService> = KotlinLanguageService::class
42 }