diff options
Diffstat (limited to 'src/Locations/FoldersLocationService.kt')
-rw-r--r-- | src/Locations/FoldersLocationService.kt | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/Locations/FoldersLocationService.kt b/src/Locations/FoldersLocationService.kt index db06dc2c..6f3954c4 100644 --- a/src/Locations/FoldersLocationService.kt +++ b/src/Locations/FoldersLocationService.kt @@ -3,15 +3,18 @@ package org.jetbrains.dokka import java.io.File public fun FoldersLocationService(root: String): FoldersLocationService = FoldersLocationService(File(root)) -public class FoldersLocationService(val root: File) : LocationService { - override fun location(node: DocumentationNode): Location { - val parts = node.path.map { identifierToFilename(it.name) } - val folder = if (node.members.none()) { - // leaf node, use file in owner's folder - parts.joinToString("/", limit = parts.size - 1, truncated = "") + "/" + parts.last() - } else { - parts.joinToString("/") + (if (parts.none()) "" else "/") + "index" - } - return Location(File(root, folder)) +public class FoldersLocationService(val root: File) : FileLocationService { + override fun location(node: DocumentationNode): FileLocation { + return FileLocation(File(root, relativePathToNode(node))) } -}
\ No newline at end of file +} + +fun relativePathToNode(node: DocumentationNode): String { + val parts = node.path.map { identifierToFilename(it.name) }.filterNot { it.isEmpty() } + return if (node.members.none()) { + // leaf node, use file in owner's folder + parts.joinToString("/") + } else { + parts.joinToString("/") + (if (parts.none()) "" else "/") + "index" + } +} |