diff options
Diffstat (limited to 'core/src/main/kotlin/renderers')
-rw-r--r-- | core/src/main/kotlin/renderers/DefaultRenderer.kt | 14 | ||||
-rw-r--r-- | core/src/main/kotlin/renderers/FileWriter.kt | 4 | ||||
-rw-r--r-- | core/src/main/kotlin/renderers/HtmlRenderer.kt | 9 | ||||
-rw-r--r-- | core/src/main/kotlin/renderers/OutputWriter.kt | 6 |
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 |