Crate case_style

Source
Expand description

Crates.io Documentation Crates.io

Converts from and to different case styles

§Examples

There are two ways to use this libary. One is when you know the type upfront:

use case_style::CaseStyle;
let kebab = CaseStyle::from_camelcase("camelCase").to_kebabcase();
println!("{}", kebab);
assert_eq!("camel-case", kebab);

Or from string

use case_style::CaseStyle;
let pascal = CaseStyle::from_case("kebab", "kebab-case")
    .expect("kebab is an existing format")
    .to_case("Pascal")
    .expect("pascal is an existing format");
println!("{}", pascal);
assert_eq!("KebabCase", pascal);

And one where you don’t know exactly:

use case_style::CaseStyle;
let kebab = CaseStyle::guess("snake_case").unwrap().to_kebabcase();
println!("{}", kebab);
assert_eq!("snake-case", kebab);

The guess method is restrictive by design, so you should decide a backup type yourself like:

use case_style::CaseStyle;
let input = "user just typed this in :P";
let snake = CaseStyle::guess(input)
    .unwrap_or(CaseStyle::from_sentencecase(input))
    .to_snakecase();
println!("{}", snake);
assert_eq!("user_just_typed_this_in_:p", snake);

In the previous example you can see that the convertion of styles does not remove odd characters. This you should also do youself.

use case_style::CaseStyle;
let input = "this is just some random input 🦖 ";
let filtered_input: String = input
    .chars()
    .filter(|x| x == &' ' || x.is_ascii_alphanumeric())  
    .collect();
let filtered_input = filtered_input.trim();

let snake = CaseStyle::guess(filtered_input)
    .unwrap_or(CaseStyle::from_lowercase_spacecase(filtered_input))
    .to_camelcase();
println!("{}", snake);
assert_eq!("thisIsJustSomeRandomInput", snake);

Current supported formats:

  • SnakeCase
  • CamelCase
  • ConstantCase
  • KebabCase
  • LowercaseSpace
  • PascalCase
  • SentenceCase

for a up to date list look at the docs

Re-exports§

pub use objects::Token;
pub use objects::Tokens;
pub use traits::Case;

Modules§

formats
guesser
naming_conventions
objects
traits

Structs§

CaseStyle