Crate anycase

Source
Expand description

šŸ’¼ A case conversion library for Rust.

Ā§šŸš€ Getting started

First, add the anycase crate to your Cargo manifest.

cargo add anycase

Then you can use the as_<case> function to get a Display type.

let s = format!("snake case: {}", anycase::as_snake("Hello world!"));
assert_eq!(s, "snake case: hello_world");

Alternatively, you can use the to_<case> function to get a String.

let s = anycase::to_snake("Hello world!");
assert_eq!(s, "hello_world");

§🤸 Usage

The anycase crate provides a set of functions to convert strings between different case styles. The following cases are available.

Given an input of Hello world!:

For all of the above functions, you can use the to_<case> variant to get a String instead of a Display type.

Additionally, the crate provides the raw module containing the raw functions which can be used to implement custom case conversion functions.

use anycase::raw;

let input = "Hello world!";
let output =  raw::to_string(input, raw::write_upper, raw::delim_fn("."));
assert_eq!(output, "HELLO.WORLD");

See the module level documentation for more details.

§How does it work?

This implementation divides the input string into words and applies a ā€œword functionā€ to each word and calls a ā€œdelimiter functionā€ for each word boundary (the space between words).

Word boundaries are defined as follows:

  • A set of consecutive non-letter/number/symbol e.g. foo _bar is two words foo and bar.
  • A transition from a lowercase letter to an uppercase letter e.g. fooBar is two words foo and Bar.
  • The second last uppercase letter in a word with multiple uppercase letters e.g. FOOBar is two words FOO and Bar.

The following char methods are used in the above conditions:

§Features

This crate is designed to be no_std compatible. This is made possible by disabling all default features. The following features are available:

  • std (enabled by default) — Currently only enables the alloc feature but is here to allow for forward compatibility with any std-only features.

  • alloc — Links the alloc crate and enables the use of String functions.

§MSRV

The minimum supported Rust version (MSRV) is 1.56.0. The policy of this crate is to only increase the MSRV in a breaking release.

Modules§

raw
This module provides raw functions for transforming strings into different cases. It is used by the functions in the root of this crate.

Functions§

as_camel
Display a string as ā€˜camelCase’.
as_kebab
Display a string as ā€˜kebab-case’.
as_lower
Display a string as ā€˜lower case’.
as_pascal
Display a string as ā€˜PascalCase’.
as_screaming_kebab
Display a string as ā€˜SCREAMING-KEBAB-CASE’.
as_screaming_snake
Display a string as ā€˜SCREAMING_SNAKE_CASE’.
as_snake
Display a string as ā€˜snake_case’.
as_title
Display a string as ā€˜Title Case’.
as_train
Display a string as ā€˜Train-Case’.
as_upper
Display a string as ā€˜UPPER CASE’.
to_camelalloc
Transforms a string to ā€˜camelCase’.
to_kebaballoc
Transforms a string to ā€˜kebab-case’.
to_loweralloc
Transforms a string to ā€˜lower case’.
to_pascalalloc
Transforms a string to ā€˜PascalCase’.
to_screaming_kebaballoc
Transforms a string to ā€˜SCREAMING-KEBAB-CASE’.
to_screaming_snakealloc
Transforms a string to ā€˜SCREAMING_SNAKE_CASE’.
to_snakealloc
Transforms a string to ā€˜snake_case’.
to_titlealloc
Transforms a string to ā€˜Title Case’.
to_trainalloc
Transforms a string to ā€˜Train-Case’.
to_upperalloc
Transforms a string to ā€˜UPPER CASE’.