aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/Generation
diff options
context:
space:
mode:
authorSimon Ogorodnik <Simon.Ogorodnik@jetbrains.com>2017-05-03 13:45:30 +0300
committerSimon Ogorodnik <Simon.Ogorodnik@jetbrains.com>2017-05-11 19:52:40 +0300
commita86c859eba6154524f3b42461aad6b45f26e3650 (patch)
tree6772882331daf29c8d19e4a3ed77ef938d45b1ac /core/src/main/kotlin/Generation
parent022a6a6bc9a1d61f190715dec56c3bef31887388 (diff)
downloaddokka-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.kt2
-rw-r--r--core/src/main/kotlin/Generation/FileGenerator.kt17
-rw-r--r--core/src/main/kotlin/Generation/Generator.kt2
-rw-r--r--core/src/main/kotlin/Generation/configurationImpl.kt11
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>,