Multiplatform kotlin string case conversion and detection library.
(Inspired by Guava's CaseFormat)
Include the following in your respositories block within the build.gradle.kts:
repositories {
maven("https://dl.bintray.com/dotcipher/maven")
}Or in groovy syntax for a build.gradle:
repositories {
maven {
url 'https://dl.bintray.com/dotcipher/maven'
}
}Include the following in your dependencies block (replacing <version>
with the latest release above:
dependencies {
// JVM implementation
implementation("io.dotcipher.kase:kase-format-jvm:<version>")
// Native / JS implementations coming soon
}KaseFormat is the main entrypoint for library usage, and it's defined as an enum of the following formats:
LOWER_HYPHEN(ie.hello-world)CAPITAL_HYPHEN(ie.Hello-World)UPPER_HYPHEN(ie.HELLO-WORLD)LOWER_UNDERSCORE(ie.hello_world)CAPITAL_UNDERSCORE(ie.Hello_World)UPPER_UNDERSCORE(ie.HELLO_WORLD)LOWER_CAMEL(ie.helloWorld)CAPITAL_CAMEL(ie.HelloWorld)
The most efficient way to convert is if the source format is known before conversion.
For example, if the intent is to convert from LOWER_UNDERSCORE (ie. hello_world) to
CAPITAL_CAMEL (ie. HelloWorld) then you could use the following syntax:
val str = "hello_world"
val output = KaseFormat.LOWER_UNDERSCORE.convert(KaseFormat.CAPITAL_CAMEL, str)
// output == "HelloWorld"If the source format isn't known before conversion, then a KaseConverter needs to be
created targeting the destination format. The KaseConverter can be reused and is thread-safe.
For example if the intent is to convert into the LOWER_HYPHEN format from any unknown format then
you can use the following syntax:
val strings = listOf("string_one", "STRING-TWO", "stringThree", "StringFour")
val converter = KaseFormat.LOWER_HYPHEN.converter()
val firstOutput = converter.convert(strings[0])
// firstOutput == "string-one"
val listOutput = converter.convert(strings.sublist(1, strings.size))
// listOutput == listOf("string-two", "string-three", "string-four")Detection of what format a string might be (by best guess), can be accomplished using the following syntax:
val str = "someString"
val format = KaseFormat.determine(str)
// format == LOWER_CAMEL