recase 0.4.0

Changes the convention case of input text.
Documentation

ReCase

crates-io api-docs Maintenance License

Changes the input text to the desired convention case.

Install

Add this to your Cargo.toml:

[dependencies]
recase = "0.4.0"

Example:

use recase::{ReCase, Casing};

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

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

    let recase1 = ReCase::new(INPUT);
    let recase2 = ReCase::new(String::from(INPUT));

    println!("{}", recase1.snake_case());     // Prints "löng_and_meaningless_ẽxample_text"
    println!("{}", recase2.camel_case());     // Prints "löngAndMeaninglessẼxampleText"
}

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

  • The crate uses a single-buffer allocation strategy for most transformations to minimize memory overhead, but still not fully optimized.
  • Some UTF-8 characters can't be lowercased, like "SS" which is the uppercased form of "ß". There might be more cases that I failed to notice.

Acknowledgements

Heavily influenced by ReCase from techniboogie-dart.