recase 0.5.1

Changes the convention case of input text.
Documentation

ReCase

crates-io Changelog api-docs License

Changes the input text to the desired convention case.

Install

Add this to your Cargo.toml:

[dependencies]
recase = "0.5.1"

Features

  • Zero Allocation Logic: Heavily optimized runtime and memory usage. It allocates exactly once (for the result string).
  • Unicode Aware: Handles complex graphemes, and acronyms correctly aside from emojis, they are treated the same as lowercase characters for now.
  • Acronyms: now support acronyms and will not split them into seperated characters anymore.

Example:

use recase::{ReCase, Casing};

fn main() {
    const INPUT: &str = "Löng and meaningless-HTML_Text";

    // Using the Casing Trait
    println!("{}", INPUT.to_kebab_case()); // Prints "löng-and-meaningless-html-text"

    let recase = ReCase::new(INPUT);

    println!("{}", recase.snake_case()); // Prints "löng_and_meaningless_html_text"
    println!("{}", recase.camel_case()); // Prints "löngAndMeaninglessHTMLText"
}

All supported convention cases:

Convention Case Trait Method (on &str / String) Struct Method (ReCase) Example Result
camelCase .to_camel_case() .camel_case() exampleString
snake_case .to_snake_case() .snake_case() example_string
PascalCase .to_pascal_case() .pascal_case() ExampleString
kebab-case .to_kebab_case() .kebab_case() example-string
dot.case .to_dot_case() .dot_case() example.string
path/case .to_path_case() .path_case() example/string
windows\path\case .to_windows_path_case() .windows_path_case() example\string
normal case .to_normal_case() .normal_case() example string
Title Case .to_title_case() .title_case() Example String
Sentence case .to_sentence_case() .sentence_case() Example string
Header-Case .to_header_case() .header_case() Example-String
UPPER_SNAKE_CASE .to_upper_snake_case() .upper_snake_case() EXAMPLE_STRING
AlTeRnAtInG cAsE .to_alternating_case() .alternating_case() eXaMpLe StRiNg

Limitations

  • Emojis are treated the same as lEmoji will be counted as lowercase characterowercase characters.
  • Some UTF-8 characters can't be lowercased, like "SS" which is the uppercased form of "ß" or the dotless I (I) will turn into a normal i. There might be more cases that I failed to notice.

Acknowledgements

Heavily influenced by ReCase from techniboogie-dart.