Esta biblioteca Java/Kotlin fornece uma API intuitiva para converter strings entre diferentes casos de texto. Possui uma ampla gama de suporte integrado para os casos de texto mais comuns. Além disso, a biblioteca foi projetada para ser facilmente ampliada com novos casos de texto personalizados, tornando-a altamente flexível e adaptável.
Neste repositório, as mudanças não acontecem com tanta frequência e a biblioteca raramente é atualizada. No entanto, este não é um projeto abandonado. Como o código é relativamente simples e tem boa cobertura de testes, dificilmente há necessidade de alterar alguma coisa.
Esta biblioteca está disponível no Maven Central. Consiste em uma biblioteca principal e uma opcional que fornece extensões para 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 >
A base desta biblioteca são duas interfaces:
dev.turingcomplete.textcaseconverter.TextCase
. Ele fornece meta informações (por exemplo, title()
e example()
) e, através de diversas variações dos métodos convert*()
, a capacidade de converter um texto para ou a partir desse caso de texto.dev.turingcomplete.textcaseconverter.WordsSplitter
que define um utilitário que divide um texto em uma lista de palavras. Geralmente, devemos entender que um conversor de maiúsculas e minúsculas de texto funciona em uma lista de palavras, não em texto bruto. Isso ocorre porque cada caso de texto reúne as palavras de um texto de uma maneira diferente. No entanto, em um texto bruto, não é visível para a máquina onde uma palavra começa e termina sem um WordsSplitter
adicional. Por exemplo, em foo bar baz
o início/fim seria definido por um espaço, mas em fooBarBaz
seria definido pela mudança de caso.
A biblioteca possui diversas implementações integradas de ambas as interfaces nas classes StandardTextCases
e StandardWordsSplitters
para cobrir os casos de texto mais comuns e formas de dividir um texto em palavras (veja os próximos capítulos).
A classe dev.turingcomplete.textcaseconverter.StandardTextCases
contém instâncias estáticas para os casos de texto mais comuns:
Nome | Exemplo | Observação |
---|---|---|
Caso de camelo estrito | camelSQLCase | Cada caractere maiúsculo define uma nova palavra. |
Estojo de camelo macio | camelSqlCase | Um caractere maiúsculo define uma nova palavra somente se o caractere anterior não estiver em maiúscula. |
Estojo Kebab | caixa de kebab | |
Caso de cobra | caso_cobra | |
Caso de cobra gritando | SCREAMING_SNAKE_CASE | |
Caso de trem | Caixa de trem | |
Caso Cobol | CASO COBOL | |
Caso Pascal | Caso Pascal | |
Caso Cobra Pascal | Pascal_Snake_Case | O primeiro caractere é sempre maiúsculo. |
Estojo Camelo Cobra | camel_Snake_Case | Usa estojo de camelo macio. O primeiro caractere é sempre minúsculo. |
Minúsculas | minúscula | |
Maiúsculas | MAIÚSCULAS | |
Caso Invertido | CASO INVERTIDO | O caso de cada personagem será invertido. |
Caso Alternado | CASO ALTERNATIVO | Cada caractere subsequente terá o caso oposto do caractere anterior. A alternância começa com o oposto do primeiro caractere. |
O exemplo a seguir mostra o uso dos métodos convert*()
da interface TextCase
para a implementação integrada do 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 " )
A classe dev.turingcomplete.textcaseconverter.StandardWordsSplitters
fornece instâncias estáticas para as formas mais comuns de dividir um texto em palavras:
), que divide um texto em torno de (possíveis múltiplos) caracteres de espaço. Palavras em branco são omitidas.-
). Palavras em branco são omitidas._
). Palavras em branco são omitidas.fooBar
seriam as duas palavras foo
e Bar
, e SQL
seriam as três palavras S
, Q
e L
.fooBar
seriam as duas palavras foo
e Bar
e SQL
seria uma palavra. Observe que cada TextCase
fornece um WordsSplitter
por meio de TextCase#wordsSplitter
, que pode ser usado para dividir um texto fornecido nesse caso de texto em palavras individuais. Isso é usado internamente, por exemplo, quando queremos converter uma caixa de texto para outra sem precisar especificar explicitamente um WordsSplitter
.
Ao adicionar a biblioteca test-case-converter-kotlin-extension
, algumas extensões Kotlin são fornecidas, tornando mais fácil o uso desta biblioteca no código Kotlin. Esses recursos adicionais podem ser vistos no exemplo a seguir:
// 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()
Alguns casos de texto e divisores de palavras integrados usam String#toLowerCase()
ou String#toUpperCase()
. A saída de ambos os métodos é sensível à localidade. Todas as chamadas para esses métodos nesta biblioteca usarão o Locale
definido nos campos estáticos da classe dev.turingcomplete.textcaseconverter.Configuration
. Por padrão, o Locale.ROOT
é usado.
Copyright (c) 2023 Marcel Kliemannel
Licenciado sob a Licença Apache, Versão 2.0 (a "Licença"); você não pode usar este arquivo exceto em conformidade com a Licença.
Você pode obter uma cópia da Licença em https://www.apache.org/licenses/LICENSE-2.0.
A menos que exigido pela lei aplicável ou acordado por escrito, o software distribuído sob a Licença é distribuído "COMO ESTÁ", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Consulte a LICENÇA para o idioma específico que rege as permissões e limitações sob a Licença.