- Notifications
You must be signed in to change notification settings - Fork11
Converts to and from various cases.
License
rutrum/convert-case
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Converts to and from various cases.
Convert case was written in Rust and is ready to be used inline with your rust code as a library.
use convert_case::{Case, Casing};assert_eq!("ronnieJamesDio", "Ronnie_James_dio".to_case(Case::Camel));assert_eq!("io_stream", "IOStream".to_case(Case::Snake));assert_eq!( "2020-04-16 My Cat Cali", "2020-04-16_my_cat_cali".from_case(Case::Snake).to_case(Case::Title));
You can read the API documentation ondocs.rs for a list of all features and read lots of examples.
Thecommand line utilityccase
was made to expose the tools of theconvert_case
library to the command line.
$ ccase -t title super_mario_64Super Mario 64$ ccase -f snake -t title 2020-04-15_my_cat_cali2020-04-16 My Cat Cali$ ccase -t camel "convert to camel"convertToCamel
convert_case | ccase | |
---|---|---|
Repository | github | github |
Crate | crates.io | crates.io |
Documentation | docs.rs |
This is list of cases that convert_case supports. Some cases are simply aliases of others. The "Random" and "PseudoRandom" cases are provided in theconvert_case
library with the "random" feature.
Case | Example |
---|---|
Snake | my_variable_name |
Constant UpperSnake | MY_VARIABLE_NAME |
Ada | My_Variable_Name |
Kebab | my-variable-name |
Cobol UpperKebab | MY-VARIABLE-NAME |
Train | My-Variable-Name |
Flat | myvariablename |
UpperFlat | MYVARIABLENAME |
Pascal UpperCamel | MyVariableName |
Camel | myVariableName |
Upper | MY VARIABLE NAME |
Lower | my variable name |
Title | My Variable Name |
Sentence | My variable name |
Alternating | mY vArIaBlE nAmE |
Toggle | mY vARIABLE nAME |
Random | MY vaRiabLe nAME |
PseudoRandom | mY VaRiAblE nAMe |
Pattern is no longer an enum. It is now a type alias forfn(&[&str]) -> Vec<String>
. The variants of Pattern can now be referenced as functions inside thepattern
module. For upgrading this means changingPattern::Lowercase
topattern::lowercase
, and calling the function directly instead of invoking themutate
method on the enum.
Inside the pattern module is also the type aliasPattern
itself.
Other breaking changes:
- Add
Case::Ada
(capital pattern with underscore delimiter.) - Add
Case::Custom
variant. It is a struct variant that takes three parameters:- pattern with type
Pattern
- delim with type
&static str
, and - boundaries with type
&'static [Boundary]
.
- pattern with type
- Because of the new
pattern::noop
function,Converter
attributepattern
is now of typePattern
and notOption<Pattern>
Case::deterministic_cases
,Case::all_cases
, andCase::random_cases
now return static arrays instead of vecs
Other changes:
- Added
Case::split
,Case::mutate
, andCase::join
which expose operations related to the boundaries, pattern, and delimiter of a case - Is now
no_std
compatible
- Removed debug print statement.
Boundary is no longer an enum. It now is a struct, and each enum variant cooresponds to an associated constant. For upgrading this just means changingBoundary::LowerUpper
to justBoundary::LOWER_UPPER
.
The benefit of this is that you can make your boundary conditions now, by instantiating theBoundary
struct, or usingBoundary::from_delim()
. Now you can split on newlines, periods, double-colons, emojis, or a more complex case like a symbol followed by a digit. You also define which characters, if any, are removed during segmentation, and where the split happens.
Changes from this feature:
- Previous
Boundary::PascalName
enum variants now much refered to asBoundary::CONSTANT_NAME
constants. - All functions that returned groups of boundaries (such as
Boundary::defaults()
,Boundary::digit_letter()
, etc) now are const and return fixed-sized arrays[Boundary; N]
, notVec<Boundary>
. Boundary::all()
was removed, since there's no longer a sense of "all" boundaries, since you can create your own.Boundary::list_from()
has been renamed toBoundary::defaults_from()
and no longer outputsBoundary::UPPER_LOWER
, since this function now only checks default boundaries.- Create custom delimiter boundaries using
Boundary::from_delim()
.
Other breaking changes:
- Rename
Case::ScreamingSnake
toCase::Constant
. - Add
Case::Sentence
(sentence pattern and space delimiter.) Casing
trait implemented forArc<str>
andRc<str>
again.
Other changes:
- Remove most imports from doc comments.
- Remove loop over
str::chars
in favor ofgraphemes
fromunicode-segmentation
.
Github userWild-W has builtnodejs bindings for convert_case that are up to date with 0.6.0.
About
Converts to and from various cases.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors3
Uh oh!
There was an error while loading.Please reload this page.