Skip to content

suprim-corp/casey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Casey

Lightweight string case conversion library for Java 8+. Zero dependencies.

Features

  • Convert between 7 case formats
  • Static methods for quick conversions
  • Fluent API for expressive code
  • Annotation-based field mapping
  • Handles acronyms (XML, HTTP, ID)
  • Numbers in strings supported

Supported Formats

Format Example
camelCase myVariableName
PascalCase MyVariableName
snake_case my_variable_name
SCREAMING_SNAKE MY_VARIABLE_NAME
kebab-case my-variable-name
Train-Case My-Variable-Name
dot.case my.variable.name

Installation

<dependency>
    <groupId>dev.suprim</groupId>
    <artifactId>casey</artifactId>
    <version>0.0.1</version>
</dependency>

Usage

Static Methods

import sant1ago.dev.suprim.casey.Casey;

Casey.toSnakeCase("myVariableName");      // "my_variable_name"
Casey.toCamelCase("my_variable_name");    // "myVariableName"
Casey.toPascalCase("my_variable_name");   // "MyVariableName"
Casey.toKebabCase("myVariableName");      // "my-variable-name"
Casey.toScreamingSnakeCase("myVar");      // "MY_VAR"
Casey.toTrainCase("myVar");               // "My-Var"
Casey.toDotCase("myVar");                 // "my.var"

Fluent API

import sant1ago.dev.suprim.casey.Casey;
import sant1ago.dev.suprim.casey.CaseFormat;

Casey.from("myVariableName")
    .to(CaseFormat.SNAKE_CASE);           // "my_variable_name"

Casey.from("my_variable_name")
    .toCamelCase();                        // "myVariableName"

Annotation Mapping

import sant1ago.dev.suprim.casey.annotation.CaseMapping;
import sant1ago.dev.suprim.casey.annotation.CaseMappingProcessor;
import sant1ago.dev.suprim.casey.CaseFormat;

public class User {
    @CaseMapping(source = CaseFormat.SNAKE_CASE)
    private String firstName;

    @CaseMapping(sourceKey = "custom_key")
    private String lastName;
}

// Map from snake_case map to object
Map<String, Object> data = Map.of("first_name", "John", "custom_key", "Doe");
User user = CaseMappingProcessor.mapTo(data, User.class);

// Convert object to map with snake_case keys
Map<String, Object> map = CaseMappingProcessor.toMap(user, CaseFormat.SNAKE_CASE);

Edge Cases

// Acronyms
Casey.toSnakeCase("XMLParser");           // "xml_parser"
Casey.toSnakeCase("MyHTTPClient");        // "my_http_client"
Casey.toSnakeCase("userID");              // "user_id"

// Numbers
Casey.toSnakeCase("user2Name");           // "user_2_name"

// Mixed delimiters
Casey.toSnakeCase("my.variable-name");    // "my_variable_name"

License

Casey is open-sourced software licensed under the MIT license.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages