Inflection Rust

This crate is a port of a port:

Inflection is a string transformation library. It singularizes and pluralizes English words, and transforms strings from CamelCase to underscored string. Inflection is a port of Ruby on Rails’ inflector to Python.

Source: https://github.com/jpvanhal/inflection

Crate

toml "inflection-rs" = "^0.1"

Documentation

Camelize

```rust use inflection_rs::inflection::Inflection; let mut inflection = Inflection::new();

asserteq!(inflection.camelizeupper("Capital", false), "capital"); asserteq!(inflection.camelize("CamelCase"), "CamelCase"); asserteq!(inflection.camelize("specialguest"), "SpecialGuest"); ```

Dasherize

rust use inflection_rs::inflection::Inflection; let mut inflection = Inflection::new(); assert_eq!(inflection.dasherize("puni_puni"), "puni-puni");

Humanize

```rust use inflection_rs::inflection::Inflection; let mut inflection = Inflection::new();

asserteq!(inflection.humanize("employeesalary"), "Employee salary"); asserteq!(inflection.humanize("authorid"), "Author"); ```

Parameterize

rust use inflection_rs::inflection::Inflection; let mut inflection = Inflection::new(); assert_eq!( inflection.parameterize_with_sep(r"Donald E. Knuth", "+".to_string()), "donald+e+knuth" ); assert_eq!( inflection.parameterize_with_sep(r"Donald E. Knuth", "~".to_string()), "donald~e~knuth" ); assert_eq!( inflection.parameterize_with_sep(r"Donald E. Knuth", "-".to_string()), "donald-e-knuth" ); assert_eq!( inflection.parameterize(r"Donald E. Knuth"), "donald-e-knuth" );

Underscore

```rust use inflection_rs::inflection::Inflection; let mut inflection = Inflection::new();

asserteq!(inflection.underscore("DeviceType"), "devicetype"); // Note: not always reversable let rev = inflection.underscore("IOError"); assert_eq!(inflection.camelize(rev), "IoError"); ```

Pluralize

```rust use inflection_rs::inflection::Inflection; let mut inflection = Inflection::new();

asserteq!(inflection.pluralize("post"), "posts"); asserteq!(inflection.pluralize("posts"), "posts"); asserteq!(inflection.pluralize("octopus"), "octopi"); asserteq!(inflection.pluralize("sheep"), "sheep"); asserteq!(inflection.pluralize("CamelOctopus"), "CamelOctopi"); asserteq!(inflection.pluralize("moves"), "moves"); asserteq!(inflection.pluralize("move"), "moves"); asserteq!(inflection.pluralize("cow"), "kine"); asserteq!(inflection.pluralize("kine"), "kine"); asserteq!(inflection.pluralize("slave"), "slaves"); assert_eq!(inflection.pluralize("slaves"), "slaves"); ```

Singularize

```rust use inflection_rs::inflection::Inflection; let mut inflection = Inflection::new();

asserteq!(inflection.singularize("post"), "post"); asserteq!(inflection.singularize("posts"), "post"); asserteq!(inflection.singularize("octopi"), "octopus"); asserteq!(inflection.singularize("sheep"), "sheep"); asserteq!(inflection.singularize("CamelOctopi"), "CamelOctopus"); asserteq!(inflection.singularize("move"), "move"); asserteq!(inflection.singularize("moves"), "move"); asserteq!(inflection.singularize("cow"), "cow"); asserteq!(inflection.singularize("kine"), "cow"); asserteq!(inflection.singularize("slaves"), "slave"); assert_eq!(inflection.singularize("slave"), "slave"); ```

Tititleize

```rust use inflection_rs::inflection::Inflection;
let mut inflection = Inflection::new();

asserteq!( inflection.titleize("TheManWithoutAPast"), "The Man Without A Past" ); asserteq!( inflection.titleize("x-men: the last stand"), "X Men: The Last Stand" ); asserteq!( inflection.titleize("raidersofthelostark"), "Raiders Of The Lost Ark" ); asserteq!( inflection.titleize("man from the boondocks"), "Man From The Boondocks" ); ```

Ordinal

```rust use inflection_rs::inflection::Inflection;
let mut inflection = Inflection::new();

asserteq!(inflection.ordinalu8(1), "st"); asserteq!(inflection.ordinalu16(2), "nd"); asserteq!(inflection.ordinalu32(3), "rd"); asserteq!(inflection.ordinalu64(4), "th"); asserteq!(inflection.ordinalu128(10), "th"); asserteq!(inflection.ordinalusize(10), "th");

asserteq!(inflection.ordinali8(1), "st"); asserteq!(inflection.ordinali16(2), "nd"); asserteq!(inflection.ordinali32(3), "rd"); asserteq!(inflection.ordinali64(4), "th"); asserteq!(inflection.ordinali128(10), "th");

asserteq!(inflection.ordinali8(-1), "st"); asserteq!(inflection.ordinali16(-2), "nd"); asserteq!(inflection.ordinali32(-3), "rd"); asserteq!(inflection.ordinali64(-4), "th"); asserteq!(inflection.ordinali128(-10), "th"); ```

Ordinalize

```rust use inflection_rs::inflection::Inflection;
let mut inflection = Inflection::new();

asserteq!(inflection.ordinalizeu8(1), "1st"); asserteq!(inflection.ordinalizeu16(2), "2nd"); asserteq!(inflection.ordinalizeu32(3), "3rd"); asserteq!(inflection.ordinalizeu64(4), "4th"); asserteq!(inflection.ordinalizeu128(10), "10th"); asserteq!(inflection.ordinalizeusize(100), "100th"); asserteq!(inflection.ordinalizeusize(10000000), "10000000th");

asserteq!(inflection.ordinalizei8(1), "1st"); asserteq!(inflection.ordinalizei16(2), "2nd"); asserteq!(inflection.ordinalizei32(3), "3rd"); asserteq!(inflection.ordinalizei64(4), "4th"); asserteq!(inflection.ordinalizei128(10), "10th"); asserteq!(inflection.ordinalizei128(10000000), "10000000th");

asserteq!(inflection.ordinalizei8(-1), "-1st"); asserteq!(inflection.ordinalizei16(-2), "-2nd"); asserteq!(inflection.ordinalizei32(-3), "-3rd"); asserteq!(inflection.ordinalizei64(-4), "-4th"); asserteq!(inflection.ordinalizei128(-10000), "-10000th"); asserteq!(inflection.ordinalizei128(-10000000), "-10000000th"); ```