From 3eee7f212798e65ff627d31e394a3658b658bc46 Mon Sep 17 00:00:00 2001 From: Ilya Ryzhenkov Date: Mon, 14 Jul 2014 21:15:27 +0400 Subject: Refactor to multiple-nodes formatting, join content. --- src/Generation/FileGenerator.kt | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/Generation/FileGenerator.kt b/src/Generation/FileGenerator.kt index 105c14e6..6d2c0a3d 100644 --- a/src/Generation/FileGenerator.kt +++ b/src/Generation/FileGenerator.kt @@ -1,18 +1,25 @@ package org.jetbrains.dokka -import java.io.File +import java.io.FileOutputStream +import java.io.OutputStreamWriter +import java.util.LinkedHashMap public class FileGenerator(val signatureGenerator: SignatureGenerator, val locationService: LocationService, val formatService: FormatService) { - public fun generate(node: DocumentationNode) { - val location = locationService.location(node) - val file = location.file.appendExtension(formatService.extension) - file.getParentFile()?.mkdirs() - file.writeText(formatService.format(node), defaultCharset) - val members = node.members.sortBy { it.name } - for (member in members) - generate(member) + public fun generate(node: DocumentationNode): Unit = generate(listOf(node)) + + public fun generate(nodes: Iterable) { + for ((location, items) in nodes.groupByTo(LinkedHashMap()) { locationService.location(it) }) { + val file = location.file.appendExtension(formatService.extension) + file.getParentFile()?.mkdirs() + FileOutputStream(file).use { + OutputStreamWriter(it, defaultCharset).use { + it.write(formatService.format(items)) + } + } + generate(items.flatMap { it.members }) + } } } \ No newline at end of file -- cgit