aboutsummaryrefslogtreecommitdiff
path: root/src/Locations/FoldersLocationService.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/Locations/FoldersLocationService.kt')
-rw-r--r--src/Locations/FoldersLocationService.kt25
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"
+ }
+}