[go: up one dir, main page]

Inflector 0.4.0

Adds String based inflections for Rust. Snake, kebab, camel, sentence, class, title, table, upper, and lower cases as well as ordinalize, deordinalize, demodulize, foreign key, and pluralize/singularize are supported as both traits and pure functions acting on String types.
Documentation
# 0.4.0

## Fixes:

- Fixes issue where strings like `HTTPParty` becomes `h_t_t_p_party` instead of `http_party` as it should -- Thanks @cmsd2

## New features:

- Adds PascalCase

## Benchmarks:
```shell
test cases::camelcase::tests::bench_camel0                      ... bench:         142 ns/iter (+/- 28)
test cases::camelcase::tests::bench_camel1                      ... bench:         143 ns/iter (+/- 30)
test cases::camelcase::tests::bench_camel2                      ... bench:         138 ns/iter (+/- 80)
test cases::camelcase::tests::bench_is_camel                    ... bench:         171 ns/iter (+/- 103)
test cases::classcase::tests::bench_class_case                  ... bench:       2,369 ns/iter (+/- 658)
test cases::classcase::tests::bench_class_from_snake            ... bench:       2,378 ns/iter (+/- 914)
test cases::classcase::tests::bench_is_class                    ... bench:       2,541 ns/iter (+/- 294)
test cases::kebabcase::tests::bench_is_kebab                    ... bench:         180 ns/iter (+/- 35)
test cases::kebabcase::tests::bench_kebab                       ... bench:         156 ns/iter (+/- 91)
test cases::kebabcase::tests::bench_kebab_from_snake            ... bench:         248 ns/iter (+/- 143)
test cases::lowercase::tests::bench_is_lower                    ... bench:         340 ns/iter (+/- 91)
test cases::lowercase::tests::bench_lower                       ... bench:         301 ns/iter (+/- 124)
test cases::pascalcase::tests::bench_is_pascal                  ... bench:         163 ns/iter (+/- 65)
test cases::pascalcase::tests::bench_pascal0                    ... bench:         140 ns/iter (+/- 78)
test cases::pascalcase::tests::bench_pascal1                    ... bench:         140 ns/iter (+/- 40)
test cases::pascalcase::tests::bench_pascal2                    ... bench:         138 ns/iter (+/- 105)
test cases::screamingsnakecase::tests::bench_is_screaming_snake ... bench:         193 ns/iter (+/- 27)
test cases::screamingsnakecase::tests::bench_screaming_snake    ... bench:         161 ns/iter (+/- 84)
test cases::sentencecase::tests::bench_is_sentence              ... bench:         394 ns/iter (+/- 85)
test cases::sentencecase::tests::bench_sentence                 ... bench:         365 ns/iter (+/- 186)
test cases::sentencecase::tests::bench_sentence_from_snake      ... bench:         333 ns/iter (+/- 178)
test cases::snakecase::tests::bench_is_snake                    ... bench:         190 ns/iter (+/- 74)
test cases::snakecase::tests::bench_snake_from_camel            ... bench:         155 ns/iter (+/- 44)
test cases::snakecase::tests::bench_snake_from_snake            ... bench:         280 ns/iter (+/- 161)
test cases::snakecase::tests::bench_snake_from_title            ... bench:         156 ns/iter (+/- 31)
test cases::tablecase::tests::bench_is_table_case               ... bench:       2,388 ns/iter (+/- 431)
test cases::tablecase::tests::bench_table_case                  ... bench:       2,240 ns/iter (+/- 446)
test cases::titlecase::tests::bench_is_title                    ... bench:         786 ns/iter (+/- 135)
test cases::titlecase::tests::bench_title                       ... bench:         826 ns/iter (+/- 278)
test cases::titlecase::tests::bench_title_from_snake            ... bench:         723 ns/iter (+/- 256)
test cases::uppercase::tests::bench_is_upper                    ... bench:         351 ns/iter (+/- 85)
test cases::uppercase::tests::bench_upper                       ... bench:         332 ns/iter (+/- 48)
```

# 0.3.3

## Fixes:

- Fixes issue where camel case tests were not run
- Fixes issue with camel case with numbers

# 0.3.2

## Fixes:

- Fixes issue https://github.com/whatisinternet/inflector/issues/18
- Fixes performance issues overall

## Benchmarks:
```shell
test cases::camelcase::tests::bench_camel0                      ... bench:         139 ns/iter (+/- 40)
test cases::camelcase::tests::bench_camel1                      ... bench:         138 ns/iter (+/- 31)
test cases::camelcase::tests::bench_camel2                      ... bench:         138 ns/iter (+/- 41)
test cases::camelcase::tests::bench_is_camel                    ... bench:         184 ns/iter (+/- 90)
test cases::classcase::tests::bench_class_case                  ... bench:       2,383 ns/iter (+/- 557)
test cases::classcase::tests::bench_class_from_snake            ... bench:       2,393 ns/iter (+/- 1,120)
test cases::classcase::tests::bench_is_class                    ... bench:       2,443 ns/iter (+/- 1,060)
test cases::kebabcase::tests::bench_is_kebab                    ... bench:         182 ns/iter (+/- 60)
test cases::kebabcase::tests::bench_kebab                       ... bench:         161 ns/iter (+/- 98)
test cases::kebabcase::tests::bench_kebab_from_snake            ... bench:         264 ns/iter (+/- 144)
test cases::lowercase::tests::bench_is_lower                    ... bench:         358 ns/iter (+/- 154)
test cases::lowercase::tests::bench_lower                       ... bench:         347 ns/iter (+/- 220)
test cases::screamingsnakecase::tests::bench_is_screaming_snake ... bench:         194 ns/iter (+/- 35)
test cases::screamingsnakecase::tests::bench_screaming_snake    ... bench:         173 ns/iter (+/- 97)
test cases::sentencecase::tests::bench_is_sentence              ... bench:         377 ns/iter (+/- 83)
test cases::sentencecase::tests::bench_sentence                 ... bench:         337 ns/iter (+/- 155)
test cases::sentencecase::tests::bench_sentence_from_snake      ... bench:         370 ns/iter (+/- 176)
test cases::snakecase::tests::bench_is_snake                    ... bench:         191 ns/iter (+/- 98)
test cases::snakecase::tests::bench_snake_from_camel            ... bench:         156 ns/iter (+/- 25)
test cases::snakecase::tests::bench_snake_from_snake            ... bench:         289 ns/iter (+/- 136)
test cases::snakecase::tests::bench_snake_from_title            ... bench:         157 ns/iter (+/- 68)
test cases::tablecase::tests::bench_is_table_case               ... bench:       2,253 ns/iter (+/- 978)
test cases::tablecase::tests::bench_table_case                  ... bench:       2,227 ns/iter (+/- 704)
test cases::titlecase::tests::bench_is_title                    ... bench:         787 ns/iter (+/- 362)
test cases::titlecase::tests::bench_title                       ... bench:         826 ns/iter (+/- 317)
test cases::titlecase::tests::bench_title_from_snake            ... bench:         747 ns/iter (+/- 230)
test cases::uppercase::tests::bench_is_upper                    ... bench:         347 ns/iter (+/- 111)
test cases::uppercase::tests::bench_upper                       ... bench:         328 ns/iter (+/- 42)
```

## OLD Benchmarks:
```shell
test cases::camelcase::tests::bench_camel                                         ... bench:       1,825 ns/iter (+/- 346)
test cases::camelcase::tests::bench_camel_from_sname                              ... bench:       1,223 ns/iter (+/- 289)
test cases::camelcase::tests::bench_is_camel                                      ... bench:      49,416 ns/iter (+/- 593)
test cases::classcase::tests::bench_class_case                                    ... bench: 160,985,376 ns/iter (+/- 5,173,751)
test cases::classcase::tests::bench_class_from_snake                              ... bench: 161,533,425 ns/iter (+/- 4,167,305)
test cases::classcase::tests::bench_is_class                                      ... bench: 161,352,118 ns/iter (+/- 3,793,478)
test cases::kebabcase::tests::bench_is_kebab                                      ... bench:         793 ns/iter (+/- 400)
test cases::kebabcase::tests::bench_kebab                                         ... bench:         752 ns/iter (+/- 310)
test cases::kebabcase::tests::bench_kebab_from_snake                              ... bench:         210 ns/iter (+/- 32)
test cases::lowercase::tests::bench_is_lower                                      ... bench:         340 ns/iter (+/- 86)
test cases::lowercase::tests::bench_lower                                         ... bench:         306 ns/iter (+/- 173)
test cases::screamingsnakecase::tests::bench_is_screaming_snake                   ... bench:         635 ns/iter (+/- 210)
test cases::screamingsnakecase::tests::bench_screaming_snake                      ... bench:         610 ns/iter (+/- 87)
test cases::screamingsnakecase::tests::bench_screaming_snake_from_camel           ... bench:         961 ns/iter (+/- 579)
test cases::screamingsnakecase::tests::bench_screaming_snake_from_class           ... bench:         894 ns/iter (+/- 352)
test cases::screamingsnakecase::tests::bench_screaming_snake_from_kebab           ... bench:         877 ns/iter (+/- 571)
test cases::screamingsnakecase::tests::bench_screaming_snake_from_screaming_snake ... bench:         584 ns/iter (+/- 304)
test cases::screamingsnakecase::tests::bench_screaming_snake_from_sentence        ... bench:       1,123 ns/iter (+/- 630)
test cases::screamingsnakecase::tests::bench_screaming_snake_from_upper_kebab     ... bench:         914 ns/iter (+/- 435)
test cases::sentencecase::tests::bench_is_sentence                                ... bench:       2,714 ns/iter (+/- 796)
test cases::sentencecase::tests::bench_sentence                                   ... bench:       2,678 ns/iter (+/- 1,357)
test cases::sentencecase::tests::bench_sentence_from_snake                        ... bench:       2,100 ns/iter (+/- 1,046)
test cases::snakecase::tests::bench_is_snake                                      ... bench:         626 ns/iter (+/- 191)
test cases::snakecase::tests::bench_snake                                         ... bench:         581 ns/iter (+/- 298)
test cases::snakecase::tests::bench_snake_from_camel                              ... bench:         882 ns/iter (+/- 328)
test cases::snakecase::tests::bench_snake_from_class                              ... bench:         883 ns/iter (+/- 193)
test cases::snakecase::tests::bench_snake_from_kebab                              ... bench:         922 ns/iter (+/- 360)
test cases::snakecase::tests::bench_snake_from_sentence                           ... bench:       1,209 ns/iter (+/- 539)
test cases::snakecase::tests::bench_snake_from_snake                              ... bench:         637 ns/iter (+/- 386)
test cases::snakecase::tests::bench_snake_from_upper_kebab                        ... bench:         876 ns/iter (+/- 488)
test cases::tablecase::tests::bench_is_table_case                                 ... bench:       5,784 ns/iter (+/- 1,129)
test cases::tablecase::tests::bench_table_case                                    ... bench:       5,754 ns/iter (+/- 1,460)
test cases::titlecase::tests::bench_is_title                                      ... bench:       2,847 ns/iter (+/- 1,553)
test cases::titlecase::tests::bench_title                                         ... bench:       2,799 ns/iter (+/- 1,309)
test cases::titlecase::tests::bench_title_from_snake                              ... bench:       2,202 ns/iter (+/- 697)
test cases::uppercase::tests::bench_is_upper                                      ... bench:         357 ns/iter (+/- 55)
test cases::uppercase::tests::bench_upper                                         ... bench:         311 ns/iter (+/- 135)
```

# 0.3.1

## Fixes:

- Fixes issue https://github.com/rust-lang/rust/pull/34660
- Updates Regex to 0.1.73 for latest fixes

# 0.3.0

## Fixes:

- Resolves issues with pluralize not always correctly pluralizing strings.
  Thanks, @weiznich!
- Resolves issues with silently failing test on table case
- Replaces complex code used for is_*_case checks with simple conversion and
  check equality.

## Breaking changes:

- Dropping support for Rust versions below stable

# 0.2.1

## Features:

- Replaced custom implementation of lower and uppercase with Rust default

## Breaking changes:

- Rust 1.2 or greater required

# 0.2.0

## Features:

- Added Pluralize
- Added Singularize
- Added Table case

## Fixes:

- Fixed doc tests to properly run as rust auto wraps doc tests in a function and
  never ran the inner function that was defined.
- Fixed documentation for kebab case
- Fixed several failed tests for various cases which were mainly typos

## Breaking changes:

- Class case now singularizes strings and verifies that strings are
  singularized. Those wishing for the old behaviour should remain on the 0.1.6
  release.


# 0.1.6

## Features:

- Added screaming snake case

# 0.1.5

## Fixes:

- Refactored tests into doc tests.


# 0.1.4

## Features:

- Significant performance improvement for casting strings between different case
  types see #13.

## Fixes:

- Fixed performance issues with string casting.
- Removed heavy reliance on Regex


# 0.1.3

## Fixes:

- Refactored code to mostly pass through snake case then be converted to lower
  the number of moving parts and reduce the complexity for adding a new casting
  as only snake case would need to be modified to convert to most other cases.

## Breaking changes:

- This release is slow in contrast to other crates


# 0.1.2

## Fixes:

- Documentation fixes
- Added uppercase
- Added lowercase
- Added foreign key
- Added sentence case
- Added title case


# 0.1.1

## Features:
- Adds support for foreign key
- Adds demodulize
- Adds deconstantize
- Adds trait based usage


# 0.1.0

## Features:

- Added support for camel case
- Added support for class case
- Added support for kebab case
- Added support for snake case