Convert ScriptNameUtil to Kotlin: phase 3 - refactor

This commit is contained in:
Ilya Chernikov
2016-06-09 12:08:31 +02:00
committed by Pavel V. Talanov
parent 590f09ee58
commit c244414f3c
@@ -18,31 +18,24 @@ package org.jetbrains.kotlin.script
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtScript import org.jetbrains.kotlin.psi.KtScript
import org.jetbrains.kotlin.utils.addToStdlib.lastIndexOfOrNull
object ScriptNameUtil { object ScriptNameUtil {
fun fileNameWithExtensionStripped(script: KtScript, extension: String): Name { fun fileNameWithExtensionStripped(script: KtScript, vararg extensions: String): Name =
val file = script.getContainingKtFile() Name.identifier(generateNameByFileName(script.getContainingKtFile().name, *extensions))
return Name.identifier(generateNameByFileName(file.name, extension))
}
fun generateNameByFileName(fileName: String, extension: String): String { fun generateNameByFileName(fileName: String, vararg extensions: String): String {
var fileName = fileName val nameStart = fileName.lastIndexOf('/').let { if (it < 0) 0 else it + 1 }
var index = fileName.lastIndexOf('/') val nameEnd = extensions.asSequence()
if (index != -1) { .map { if (it.startsWith('.')) it else ".$it" }
fileName = fileName.substring(index + 1) .firstOrNull { fileName.endsWith(it) }
} ?.let { fileName.length - it.length }
if (fileName.endsWith(extension)) { ?: fileName.lastIndexOf('.')?.let { if (it < 0) fileName.length else it }
fileName = fileName.substring(0, fileName.length - extension.length) ?: fileName.length
}
else {
index = fileName.indexOf('.')
if (index != -1) {
fileName = fileName.substring(0, index)
}
}
fileName = Character.toUpperCase(fileName[0]) + if (fileName.length == 0) "" else fileName.substring(1)
fileName = fileName.replace('.', '_')
return fileName return fileName
.substring(nameStart, nameEnd)
.replace('.', '_')
.capitalize()
} }
} }