Pustaka Java/Kotlin ini menyediakan API intuitif untuk mengonversi string di antara kasus teks yang berbeda. Ini memiliki berbagai dukungan bawaan untuk kasus teks yang paling umum. Selain itu, perpustakaan ini dirancang agar mudah diperluas dengan kasus teks khusus baru, menjadikannya sangat fleksibel dan mudah beradaptasi.
Dalam repositori ini, perubahan tidak sering terjadi dan perpustakaan sangat jarang diperbarui. Namun, ini bukanlah proyek yang ditinggalkan. Karena kodenya relatif sederhana dan memiliki cakupan pengujian yang baik, hampir tidak ada kebutuhan untuk mengubah apa pun.
Perpustakaan ini tersedia di Maven Central. Ini terdiri dari perpustakaan utama dan perpustakaan opsional yang menyediakan ekstensi untuk Kotlin.
// Main dependency
implementation ' dev.turingcomplete:test-case-converter:2.0.0 ' // Groovy build script
implementation( " dev.turingcomplete:test-case-converter:2.0.0 " ) // Kotlin build script
// Optional: Kotlin extensions
implementation ' dev.turingcomplete:test-case-converter-kotlin-extension:2.0.0 ' // Groovy build script
implementation( " dev.turingcomplete:test-case-converter-kotlin-extension:2.0.0 " ) // Kotlin build script
<!-- Main dependency -->
< dependency >
< groupId >dev.turingcomplete</ groupId >
< artifactId >test-case-converter</ artifactId >
< version >2.0.0</ version >
</ dependency >
<!-- Optional: Kotlin extensions -->
< dependency >
< groupId >dev.turingcomplete</ groupId >
< artifactId >test-case-converter-kotlin-extension</ artifactId >
< version >2.0.0</ version >
</ dependency >
Dasar dari perpustakaan ini adalah dua antarmuka:
dev.turingcomplete.textcaseconverter.TextCase
. Ini memberikan informasi meta (misalnya, title()
dan example()
) dan, melalui beberapa variasi metode convert*()
, kemampuan untuk mengkonversi teks ke atau dari case teks tersebut.dev.turingcomplete.textcaseconverter.WordsSplitter
yang mendefinisikan utilitas yang membagi teks menjadi daftar kata. Secara umum, kita harus memahami bahwa pengubah huruf besar-kecil berfungsi pada daftar kata, bukan pada teks mentah. Hal ini karena setiap kasus teks menyatukan kata-kata dalam teks dengan cara yang berbeda. Namun, dalam teks mentah, kata tersebut tidak terlihat oleh mesin saat kata dimulai dan diakhiri tanpa WordsSplitter
tambahan. Misalnya, di foo bar baz
awal/akhir akan ditentukan oleh spasi, tetapi di fooBarBaz
akan ditentukan oleh perubahan huruf besar/kecil.
Pustaka ini memiliki beberapa implementasi bawaan dari kedua antarmuka di kelas StandardTextCases
dan StandardWordsSplitters
untuk mencakup kasus teks yang paling umum dan cara membagi teks menjadi kata-kata (lihat bab berikutnya).
Kelas dev.turingcomplete.textcaseconverter.StandardTextCases
berisi instance statis untuk kasus teks yang paling umum:
Nama | Contoh | Komentar |
---|---|---|
Kasus Unta Ketat | camelSQLCase | Setiap karakter huruf besar mendefinisikan kata baru. |
Casing Unta Lembut | camelSqlCase | Karakter huruf besar mendefinisikan kata baru hanya jika karakter sebelumnya tidak menggunakan huruf besar. |
Kasus Kebab | kotak kebab | |
Kasus Ular | kasus_ular | |
Kasus Ular Berteriak | SCREAMING_SNAKE_CASE | |
Kasus Kereta Api | Kasus Kereta Api | |
Kasus Kobol | KASUS COBOL | |
Kasus Pascal | Kasus Pascal | |
Kasus Ular Pascal | Pascal_Snake_Case | Karakter pertama selalu huruf besar. |
Kasus Ular Unta | unta_Ular_Kasus | Menggunakan casing unta yang lembut. Karakter pertama selalu huruf kecil. |
Huruf Kecil | huruf kecil | |
Huruf besar | HURUF BESAR | |
Kasus Terbalik | KASUS TERBALIK | Kasus setiap karakter akan dibalik. |
Kasus Bergantian | KASUS ALTERNATIF | Setiap karakter berikutnya akan memiliki kasus yang berlawanan dengan karakter sebelumnya. Pergantian dimulai dengan kebalikan dari karakter pertama. |
Contoh berikut menunjukkan penggunaan metode convert*()
antarmuka TextCase
untuk implementasi Camel Case bawaan:
// All will return `fooBarBaz`
// Array of words
StandardTextCases . CAMEL_CASE .convert( " foo " , " bar " , " baz " )
// List of words
StandardTextCases . CAMEL_CASE .convert( List .of( " foo " , " bar " , " baz " ))
// Given a raw text in which the start/end of a word is defined by a space
StandardTextCases . CAMEL_CASE .convert( " Foo bar baz " , StandardWordsSplitters . SPACE )
// Given a raw text that is in Cobol Case and convert it into Camel Case
StandardTextCases . CAMEL_CASE .convertForm( StandardTextCases . COBOL_CASE , " FOO-BAR-BAZ " )
// Identical to the previous one, only the other way around
StandardTextCases . COBOL_CASE .convertTo( StandardTextCases . CAMEL_CASE , " FOO-BAR-BAZ " )
Kelas dev.turingcomplete.textcaseconverter.StandardWordsSplitters
menyediakan instance statis untuk cara paling umum untuk membagi teks menjadi kata-kata:
), yang membagi teks menjadi sekitar (mungkin beberapa) karakter spasi. Kata-kata kosong dihilangkan.-
). Kata-kata kosong dihilangkan._
). Kata-kata kosong dihilangkan.fooBar
akan menjadi dua kata foo
dan Bar
, dan SQL
akan menjadi tiga kata S
, Q
dan L
.fooBar
akan menjadi dua kata foo
dan Bar
, dan SQL
akan menjadi satu kata. Perhatikan bahwa setiap TextCase
menyediakan WordsSplitter
melalui TextCase#wordsSplitter
, yang dapat digunakan untuk membagi teks yang diberikan dalam text case tersebut menjadi kata-kata individual. Ini digunakan secara internal, misalnya, ketika kita ingin mengonversi kasus teks ke kasus lain tanpa harus menentukan WordsSplitter
secara eksplisit.
Dengan menambahkan pustaka test-case-converter-kotlin-extension
, beberapa ekstensi Kotlin disediakan, sehingga memudahkan penggunaan pustaka ini dalam kode Kotlin. Fitur tambahan tersebut dapat dilihat pada contoh berikut:
// Convert the given raw text into Snake Case. Both will return `foo_bar`.
" foo bar " .toTextCase( SNAKE_CASE )
" fooBar " .toTextCase( SNAKE_CASE , UPPER_CASE )
// Will create a `WordsSplitter` that splits words by the delimiter `//`.
" // " .toWordsSplitter()
Beberapa pemisah kasus teks dan kata bawaan menggunakan String#toLowerCase()
atau String#toUpperCase()
. Output dari kedua metode ini sensitif terhadap lokal. Semua panggilan ke metode ini di perpustakaan ini akan menggunakan set Locale
di bidang statis kelas dev.turingcomplete.textcaseconverter.Configuration
. Secara default, Locale.ROOT
digunakan.
Hak Cipta (c) 2023 Marcel Kliemannel
Berlisensi di bawah Lisensi Apache, Versi 2.0 ("Lisensi"); Anda tidak boleh menggunakan file ini kecuali sesuai dengan Lisensi.
Anda dapat memperoleh salinan Lisensi di https://www.apache.org/licenses/LICENSE-2.0.
Kecuali diwajibkan oleh undang-undang yang berlaku atau disetujui secara tertulis, perangkat lunak yang didistribusikan berdasarkan Lisensi didistribusikan berdasarkan DASAR "APA ADANYA", TANPA JAMINAN ATAU KETENTUAN DALAM BENTUK APAPUN, baik tersurat maupun tersirat. Lihat LISENSI untuk bahasa tertentu yang mengatur izin dan batasan di bawah Lisensi.