blob: 83e1cf6acd7c71fe2793aa24149b1eba601c585a [file] [log] [blame]
package org.jetbrains.dokka
import com.google.inject.Inject
import com.google.inject.name.Named
import java.io.File
class FoldersLocationService @Inject constructor(@Named("outputDir") val rootFile: File, val extension: String) : FileLocationService {
constructor(root: String): this(File(root), "")
override val root: Location
get() = FileLocation(rootFile)
override fun withExtension(newExtension: String): FileLocationService {
return if (extension.isEmpty()) FoldersLocationService(rootFile, newExtension) else this
}
override fun location(qualifiedName: List<String>, hasMembers: Boolean): FileLocation {
return FileLocation(File(rootFile, relativePathToNode(qualifiedName, hasMembers)).appendExtension(extension))
}
}
fun relativePathToNode(qualifiedName: List<String>, hasMembers: Boolean): String {
val parts = qualifiedName.map { identifierToFilename(it) }.filterNot { it.isEmpty() }
return if (!hasMembers) {
// leaf node, use file in owner's folder
parts.joinToString("/")
} else {
parts.joinToString("/") + (if (parts.none()) "" else "/") + "index"
}
}