Cette bibliothèque Java/Kotlin fournit une API intuitive pour convertir des chaînes entre différentes casses de texte. Il dispose d'une large gamme de prise en charge intégrée pour les cas de texte les plus courants. De plus, la bibliothèque est conçue pour être facilement étendue avec de nouvelles casses de texte personnalisées, ce qui la rend très flexible et adaptable.
Dans ce référentiel, les changements ne se produisent pas si souvent et la bibliothèque est très rarement mise à jour. Il ne s’agit cependant pas d’un projet abandonné. Étant donné que le code est relativement simple et offre une bonne couverture de test, il n’est pratiquement pas nécessaire de changer quoi que ce soit.
Cette bibliothèque est disponible sur Maven Central. Il se compose d'une bibliothèque principale et d'une bibliothèque facultative qui fournit des extensions pour 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 >
La base de cette bibliothèque sont deux interfaces :
dev.turingcomplete.textcaseconverter.TextCase
. Il fournit des méta-informations (par exemple, title()
et example()
) et, grâce à plusieurs variantes de méthodes convert*()
, la possibilité de convertir un texte vers ou depuis cette casse de texte.dev.turingcomplete.textcaseconverter.WordsSplitter
qui définit un utilitaire qui divise un texte en une liste de mots. De manière générale, nous devons comprendre qu'un convertisseur de casse de texte fonctionne sur une liste de mots, pas sur du texte brut. En effet, chaque cas de texte rassemble les mots d'un texte d'une manière différente. Cependant, dans un texte brut, il n'est pas visible par machine où commence et se termine un mot sans WordsSplitter
supplémentaire. Par exemple, dans foo bar baz
le début/la fin serait défini par un espace, mais dans fooBarBaz
il serait défini par le changement de casse.
La bibliothèque possède plusieurs implémentations intégrées des deux interfaces dans les classes StandardTextCases
et StandardWordsSplitters
pour couvrir les cas de texte les plus courants et les manières de diviser un texte en mots (voir chapitres suivants).
La classe dev.turingcomplete.textcaseconverter.StandardTextCases
contient des instances statiques pour les cas de texte les plus courants :
Nom | Exemple | Remarque |
---|---|---|
Affaire stricte des chameaux | chameauSQLCase | Chaque caractère majuscule définit un nouveau mot. |
Étui souple en chameau | chameauSqlCase | Un caractère majuscule définit un nouveau mot uniquement si le caractère précédent n'est pas en majuscule. |
Étui à kebab | étui à kebab | |
Étui Serpent | cas_serpent | |
Affaire Serpent Hurlant | SCREAMING_SNAKE_CASE | |
Cas de train | Cas de train | |
Cas Cobol | CAS COBOL | |
Cas Pascal | PascalCase | |
Affaire Pascal Serpent | Pascal_Snake_Case | Le premier caractère est toujours en majuscule. |
Étui Serpent Chameau | camel_Snake_Case | Utilise un étui souple en chameau. Le premier caractère est toujours en minuscule. |
Minuscules | minuscule | |
Haut de casse | MAJUSCULE | |
Cas inversé | BOÎTIER INVERSÉ | Le cas de chaque personnage sera inversé. |
Cas alterné | CAS ALTERNATIF | Chaque caractère suivant aura la casse opposée du caractère précédent. L'alternance commence par l'opposé du premier caractère. |
L'exemple suivant montre l'utilisation des méthodes convert*()
de l'interface TextCase
pour l'implémentation intégrée de Camel Case :
// 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 " )
La classe dev.turingcomplete.textcaseconverter.StandardWordsSplitters
fournit des instances statiques pour les manières les plus courantes de diviser un texte en mots :
), qui divise un texte autour de (éventuellement plusieurs) caractères d'espacement. Les mots vides sont omis.-
). Les mots vides sont omis._
). Les mots vides sont omis.fooBar
serait les deux mots foo
et Bar
, et SQL
serait les trois mots S
, Q
et L
.fooBar
serait les deux mots foo
et Bar
, et SQL
serait un seul mot. Notez que chaque TextCase
fournit un WordsSplitter
via TextCase#wordsSplitter
, qui peut être utilisé pour diviser un texte donné dans cette casse de texte en mots individuels. Ceci est utilisé en interne, par exemple, lorsque nous voulons convertir une casse de texte en une autre sans avoir à spécifier explicitement un WordsSplitter
.
En ajoutant la bibliothèque test-case-converter-kotlin-extension
, certaines extensions Kotlin sont fournies, facilitant l'utilisation de cette bibliothèque dans le code Kotlin. Ces fonctionnalités supplémentaires peuvent être vues dans l’exemple suivant :
// 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()
Certaines casses de texte et séparateurs de mots intégrés utilisent String#toLowerCase()
ou String#toUpperCase()
. Le résultat des deux méthodes est sensible aux paramètres régionaux. Tous les appels à ces méthodes dans cette bibliothèque utiliseront les paramètres Locale
définis dans les champs statiques de la classe dev.turingcomplete.textcaseconverter.Configuration
. Par défaut, Locale.ROOT
est utilisé.
Copyright (c) 2023 Marcel Kliemannel
Sous licence Apache, version 2.0 (la « Licence » ); vous ne pouvez pas utiliser ce fichier sauf en conformité avec la licence.
Vous pouvez obtenir une copie de la licence sur https://www.apache.org/licenses/LICENSE-2.0.
Sauf disposition contraire de la loi applicable ou accord écrit, le logiciel distribué sous la licence est distribué « EN L'ÉTAT », SANS GARANTIE OU CONDITION D'AUCUNE SORTE, expresse ou implicite. Consultez la LICENCE pour connaître la langue spécifique régissant les autorisations et les limitations en vertu de la licence.