aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/renderers
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/kotlin/renderers')
-rw-r--r--core/src/main/kotlin/renderers/DefaultRenderer.kt14
-rw-r--r--core/src/main/kotlin/renderers/FileWriter.kt4
-rw-r--r--core/src/main/kotlin/renderers/HtmlRenderer.kt9
-rw-r--r--core/src/main/kotlin/renderers/OutputWriter.kt6
4 files changed, 22 insertions, 11 deletions
diff --git a/core/src/main/kotlin/renderers/DefaultRenderer.kt b/core/src/main/kotlin/renderers/DefaultRenderer.kt
index 8f6c6635..5f982251 100644
--- a/core/src/main/kotlin/renderers/DefaultRenderer.kt
+++ b/core/src/main/kotlin/renderers/DefaultRenderer.kt
@@ -1,15 +1,20 @@
package org.jetbrains.dokka.renderers
+import org.jetbrains.dokka.CoreExtensions
import org.jetbrains.dokka.pages.*
import org.jetbrains.dokka.plugability.DokkaContext
+import org.jetbrains.dokka.plugability.single
import org.jetbrains.dokka.resolvers.LocationProvider
+
abstract class DefaultRenderer<T>(
- protected val writer: Writer,
- protected val locationProvider: LocationProvider,
+ protected val outputWriter: OutputWriter,
protected val context: DokkaContext
) : Renderer {
+ protected lateinit var locationProvider: LocationProvider
+ private set
+
protected abstract fun T.buildHeader(level: Int, content: T.() -> Unit)
protected abstract fun T.buildLink(address: String, content: T.() -> Unit)
protected abstract fun T.buildList(node: ContentList, pageContext: PageNode)
@@ -64,7 +69,7 @@ abstract class DefaultRenderer<T>(
}
protected open fun renderPage(page: PageNode) =
- writer.write(locationProvider.resolve(page), buildPage(page, ::buildPageContent), "")
+ outputWriter.write(locationProvider.resolve(page), buildPage(page, ::buildPageContent), "")
protected open fun renderPages(root: PageNode) {
renderPage(root)
@@ -77,7 +82,7 @@ abstract class DefaultRenderer<T>(
getPackageNamesAndPlatforms(root)
.keys
.joinToString("\n")
- .also { writer.write("${root.name}/package-list", it, "") }
+ .also { outputWriter.write("${root.name}/package-list", it, "") }
protected open fun getPackageNamesAndPlatforms(root: PageNode): Map<String, List<PlatformData>> =
root.children
@@ -90,6 +95,7 @@ abstract class DefaultRenderer<T>(
}
override fun render(root: PageNode) {
+ locationProvider = context.single(CoreExtensions.locationProviderFactory).getLocationProvider(root, context)
renderPackageList(root)
buildSupportFiles()
renderPages(root)
diff --git a/core/src/main/kotlin/renderers/FileWriter.kt b/core/src/main/kotlin/renderers/FileWriter.kt
index c9785dfd..5439db17 100644
--- a/core/src/main/kotlin/renderers/FileWriter.kt
+++ b/core/src/main/kotlin/renderers/FileWriter.kt
@@ -4,10 +4,10 @@ import java.io.File
import java.io.IOException
import java.nio.file.Paths
-class FileWriter(override val root: String, override val extension: String) : Writer {
+class FileWriter(val root: String, override val extension: String): OutputWriter {
private val createdFiles: MutableSet<String> = mutableSetOf()
- override fun write(path: String, text: String, ext: String){
+ override fun write(path: String, text: String, ext: String) {
if (createdFiles.contains(path)) {
println("ERROR. An attempt to write $root/$path several times!")
return
diff --git a/core/src/main/kotlin/renderers/HtmlRenderer.kt b/core/src/main/kotlin/renderers/HtmlRenderer.kt
index 2bb07666..68d6d276 100644
--- a/core/src/main/kotlin/renderers/HtmlRenderer.kt
+++ b/core/src/main/kotlin/renderers/HtmlRenderer.kt
@@ -4,15 +4,13 @@ import kotlinx.html.*
import kotlinx.html.stream.appendHTML
import org.jetbrains.dokka.pages.*
import org.jetbrains.dokka.plugability.DokkaContext
-import org.jetbrains.dokka.resolvers.LocationProvider
import java.io.File
import java.net.URL
open class HtmlRenderer(
- writer: Writer,
- locationProvider: LocationProvider,
+ outputWriter: OutputWriter,
context: DokkaContext
-) : DefaultRenderer<FlowContent>(writer, locationProvider, context) {
+) : DefaultRenderer<FlowContent>(outputWriter, context) {
override fun FlowContent.buildList(node: ContentList, pageContext: PageNode) =
if (node.ordered) ol {
@@ -120,8 +118,9 @@ open class HtmlRenderer(
text(textNode.text)
}
+
override fun buildSupportFiles() { // TODO copy file instead of reading
- writer.write(
+ outputWriter.write(
"style.css",
javaClass.getResourceAsStream("/dokka/styles/style.css").reader().readText()
)
diff --git a/core/src/main/kotlin/renderers/OutputWriter.kt b/core/src/main/kotlin/renderers/OutputWriter.kt
new file mode 100644
index 00000000..84cc124d
--- /dev/null
+++ b/core/src/main/kotlin/renderers/OutputWriter.kt
@@ -0,0 +1,6 @@
+package org.jetbrains.dokka.renderers
+
+interface OutputWriter{
+ val extension: String
+ fun write(path: String, text: String, ext: String = extension)
+} \ No newline at end of file