diff options
author | Simon Ogorodnik <Simon.Ogorodnik@jetbrains.com> | 2017-05-03 13:45:30 +0300 |
---|---|---|
committer | Simon Ogorodnik <Simon.Ogorodnik@jetbrains.com> | 2017-05-11 19:52:40 +0300 |
commit | a86c859eba6154524f3b42461aad6b45f26e3650 (patch) | |
tree | 6772882331daf29c8d19e4a3ed77ef938d45b1ac /core/src/main/kotlin/Generation | |
parent | 022a6a6bc9a1d61f190715dec56c3bef31887388 (diff) | |
download | dokka-a86c859eba6154524f3b42461aad6b45f26e3650.tar.gz dokka-a86c859eba6154524f3b42461aad6b45f26e3650.tar.bz2 dokka-a86c859eba6154524f3b42461aad6b45f26e3650.zip |
Support linking of external documentation
Introduce PackageListService
#KT-16309 fixed
Diffstat (limited to 'core/src/main/kotlin/Generation')
-rw-r--r-- | core/src/main/kotlin/Generation/DokkaGenerator.kt | 2 | ||||
-rw-r--r-- | core/src/main/kotlin/Generation/FileGenerator.kt | 17 | ||||
-rw-r--r-- | core/src/main/kotlin/Generation/Generator.kt | 2 | ||||
-rw-r--r-- | core/src/main/kotlin/Generation/configurationImpl.kt | 11 |
4 files changed, 31 insertions, 1 deletions
diff --git a/core/src/main/kotlin/Generation/DokkaGenerator.kt b/core/src/main/kotlin/Generation/DokkaGenerator.kt index 3350ab1d..c0b631e4 100644 --- a/core/src/main/kotlin/Generation/DokkaGenerator.kt +++ b/core/src/main/kotlin/Generation/DokkaGenerator.kt @@ -109,7 +109,7 @@ class DokkaGenerator(val logger: DokkaLogger, } } -class DokkaMessageCollector(val logger: DokkaLogger): MessageCollector { +class DokkaMessageCollector(val logger: DokkaLogger) : MessageCollector { override fun clear() { seenErrors = false } diff --git a/core/src/main/kotlin/Generation/FileGenerator.kt b/core/src/main/kotlin/Generation/FileGenerator.kt index 86ebd6b7..e055c537 100644 --- a/core/src/main/kotlin/Generation/FileGenerator.kt +++ b/core/src/main/kotlin/Generation/FileGenerator.kt @@ -10,6 +10,8 @@ class FileGenerator @Inject constructor(val locationService: FileLocationService @set:Inject(optional = true) var outlineService: OutlineFormatService? = null @set:Inject(optional = true) lateinit var formatService: FormatService + @set:Inject(optional = true) lateinit var options: DocumentationOptions + @set:Inject(optional = true) var packageListService: PackageListService? = null override fun buildPages(nodes: Iterable<DocumentationNode>) { val specificLocationService = locationService.withExtension(formatService.extension) @@ -50,6 +52,21 @@ class FileGenerator @Inject constructor(val locationService: FileLocationService } } } + + override fun buildPackageList(nodes: Iterable<DocumentationNode>) { + if (packageListService == null) return + + for (module in nodes) { + + val moduleRoot = locationService.location(module).file.parentFile + val packageListFile = File(moduleRoot, "package-list") + + packageListFile.writeText("\$dokka.format:${options.outputFormat}\n" + + packageListService!!.formatPackageList(module as DocumentationModule)) + } + + } + } private fun File.mkdirsOrFail() { diff --git a/core/src/main/kotlin/Generation/Generator.kt b/core/src/main/kotlin/Generation/Generator.kt index 83ddd04f..76a5f350 100644 --- a/core/src/main/kotlin/Generation/Generator.kt +++ b/core/src/main/kotlin/Generation/Generator.kt @@ -4,12 +4,14 @@ interface Generator { fun buildPages(nodes: Iterable<DocumentationNode>) fun buildOutlines(nodes: Iterable<DocumentationNode>) fun buildSupportFiles() + fun buildPackageList(nodes: Iterable<DocumentationNode>) } fun Generator.buildAll(nodes: Iterable<DocumentationNode>) { buildPages(nodes) buildOutlines(nodes) buildSupportFiles() + buildPackageList(nodes) } fun Generator.buildPage(node: DocumentationNode): Unit = buildPages(listOf(node)) diff --git a/core/src/main/kotlin/Generation/configurationImpl.kt b/core/src/main/kotlin/Generation/configurationImpl.kt index bb2f6d12..425b016b 100644 --- a/core/src/main/kotlin/Generation/configurationImpl.kt +++ b/core/src/main/kotlin/Generation/configurationImpl.kt @@ -3,6 +3,7 @@ package org.jetbrains.dokka import org.jetbrains.dokka.DokkaConfiguration.SourceLinkDefinition import org.jetbrains.dokka.DokkaConfiguration.SourceRoot import java.io.File +import java.net.URL data class SourceLinkDefinitionImpl(override val path: String, @@ -34,6 +35,16 @@ data class PackageOptionsImpl(override val prefix: String, override val reportUndocumented: Boolean = true, override val skipDeprecated: Boolean = false) : DokkaConfiguration.PackageOptions +data class ExternalDocumentationLinkImpl(override val url: URL, + override val packageListUrl: URL) : DokkaConfiguration.ExternalDocumentationLink { + constructor(root: URL) : this(root, URL(root, "package-list")) + + constructor(root: String) : this(URL(root)) + + constructor(root: String, packageListUrl: String) : this(URL(root), URL(packageListUrl)) + +} + data class DokkaConfigurationImpl(override val moduleName: String, override val classpath: List<String>, override val sourceRoots: List<SourceRootImpl>, |