https://github.com/whatisinternet/Inflector
A rust inflection library
https://github.com/whatisinternet/Inflector
crates inflector pluralization rust string-manipulation
Last synced: 6 months ago
JSON representation
A rust inflection library
- Host: GitHub
- URL: https://github.com/whatisinternet/Inflector
- Owner: whatisinternet
- License: bsd-2-clause
- Archived: true
- Created: 2015-08-30T05:54:17.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2023-06-03T00:16:22.000Z (almost 2 years ago)
- Last Synced: 2024-10-29T16:57:01.584Z (6 months ago)
- Topics: crates, inflector, pluralization, rust, string-manipulation
- Language: Rust
- Homepage: https://docs.rs/Inflector
- Size: 290 KB
- Stars: 126
- Watchers: 3
- Forks: 28
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Rust Inflector
[](https://travis-ci.org/whatisinternet/Inflector) [](https://crates.io/crates/inflector)[](https://crates.io/crates/inflector)
Adds String based inflections for Rust. Snake, kebab, train, camel,
sentence, class, and title cases as well as ordinalize,
deordinalize, demodulize, deconstantize, foreign key, table case, and pluralize/singularize are supported as both traits and pure functions
acting on &str and String types.-----
## Documentation:Documentation can be found here at the README or via rust docs below.
[Rust docs with examples](https://docs.rs/Inflector)
-----
## Installation:
### As a [crate](http://crates.io)
```toml
[dependencies]
Inflector = "*"
```### Compile yourself:
1. Install [Rust and cargo](http://doc.crates.io/)
2. git clone https://github.com/whatisinternet/Inflector
3. Library: cd inflector && cargo build --release --lib
4. You can find the library in target/release## Usage / Example:
```rust
...
// to use methods like String.to_lower_case();
extern crate inflector;
use inflector::Inflector;
...
fn main() {
...
let camel_case_string: String = "some_string".to_camel_case();
...
}```
Or
```rust
...
// to use methods like to_snake_case(&str);
extern crate inflector;// use inflector::cases::classcase::to_class_case;
// use inflector::cases::classcase::is_class_case;// use inflector::cases::camelcase::to_camel_case;
// use inflector::cases::camelcase::is_camel_case;// use inflector::cases::pascalcase::to_pascal_case;
// use inflector::cases::pascalcase::is_pascal_case;// use inflector::cases::screamingsnakecase::to_screamingsnake_case;
// use inflector::cases::screamingsnakecase::is_screamingsnake_case;// use inflector::cases::snakecase::to_snake_case;
// use inflector::cases::snakecase::is_snake_case;// use inflector::cases::kebabcase::to_kebab_case;
// use inflector::cases::kebabcase::is_kebab_case;// use inflector::cases::traincase::to_train_case;
// use inflector::cases::traincase::is_train_case;// use inflector::cases::sentencecase::to_sentence_case;
// use inflector::cases::sentencecase::is_sentence_case;// use inflector::cases::titlecase::to_title_case;
// use inflector::cases::titlecase::is_title_case;// use inflector::cases::tablecase::to_table_case;
// use inflector::cases::tablecase::is_table_case;// use inflector::numbers::ordinalize::ordinalize;
// use inflector::numbers::deordinalize::deordinalize;// use inflector::suffix::foreignkey::to_foreign_key;
// use inflector::suffix::foreignkey::is_foreign_key;// use inflector::string::demodulize::demodulize;
// use inflector::string::deconstantize::deconstantize;// use inflector::string::pluralize::to_plural;
// use inflector::string::singularize::to_singular;
...
fn main() {
...
let camel_case_string: String = to_camel_case("some_string");
...
}```
## Advanced installation and usage:
If the project doesn't require singularize, pluralize, class, table, demodulize,
deconstantize. Then in your `cargo.toml` you may wish to specify:```toml
[dependencies.Inflector]
version = "*"
default-features = false
```Or
```toml
Inflector = {version="*", default-features=false}```
To test this crate locally with features off try:
```shell
cargo test --no-default-features
```## [Contributing](CONTRIBUTING.md)
This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.