Convert ScriptNameUtil to Kotlin: phase 3 - refactor
This commit is contained in:
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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user