#snake #inflector #inflection #camel #pluralize

ruby_inflector

Adds String based inflections for Rust. Snake, kebab, camel, sentence, class, title and table cases as well as ordinalize, deordinalize, demodulize, foreign key, and pluralize/singularize are supported as both traits and pure functions acting on String types. Intended to emulate the behavior of ActiveSupport::Inflector in Ruby as closely as possible. https://api.rubyonrails.org/classes/ActiveSupport/Inflector.html

6 releases

0.0.10 Jun 24, 2023
0.0.9 Jun 24, 2023

#301 in Text processing

Download history 35/week @ 2023-12-18 7/week @ 2024-01-08 97/week @ 2024-01-15 21/week @ 2024-01-29 234/week @ 2024-02-05 17/week @ 2024-02-12 35/week @ 2024-02-19 104/week @ 2024-02-26 118/week @ 2024-03-04 58/week @ 2024-03-11 38/week @ 2024-03-18 52/week @ 2024-03-25 85/week @ 2024-04-01

241 downloads per month
Used in pks

BSD-2-Clause

125KB
3K SLoC

Rust Inflector

This project is forked from https://github.com/chrislearn/cruet.

The intent of this library is to emulate https://api.rubyonrails.org/classes/ActiveSupport/Inflector.html as closely as possible to allow for rust implementations of ruby tools.

CI Audit

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


Installation:

As a crate

[dependencies]
ruby_inflector = "*"

Compile yourself:

  1. Install Rust and cargo
  2. git clone https://github.com/alexevanczuk/ruby_inflector
  3. Library: cd ruby_inflector && cargo build --release --lib
  4. You can find the library in target/release

Usage / Example:

// to use methods like String.to_lower_case();
use ruby_inflector::Inflector;
fn main() {
  let camel_case_string: String = "some_string".to_camel_case();
}

Or

// to use methods like to_snake_case(&str);
use ruby_inflector;

// use ruby_inflector::to_class_case;
// use ruby_inflector::is_class_case;

// use ruby_inflector::to_camel_case;
// use ruby_inflector::is_camel_case;

// use ruby_inflector::to_pascal_case;
// use ruby_inflector::is_pascal_case;

// use ruby_inflector::to_screamingsnake_case;
// use ruby_inflector::is_screamingsnake_case;

// use ruby_inflector::to_snake_case;
// use ruby_inflector::is_snake_case;

// use ruby_inflector::to_kebab_case;
// use ruby_inflector::is_kebab_case;

// use ruby_inflector::to_train_case;
// use ruby_inflector::is_train_case;

// use ruby_inflector::to_sentence_case;
// use ruby_inflector::is_sentence_case;

// use ruby_inflector::to_title_case;
// use ruby_inflector::is_title_case;

// use ruby_inflector::to_table_case;
// use ruby_inflector::is_table_case;

// use ruby_inflector::ordinalize;
// use ruby_inflector::deordinalize;

// use ruby_inflector::to_foreign_key;
// use ruby_inflector::is_foreign_key;

// use ruby_inflector::demodulize;
// use ruby_inflector::deconstantize;

// use ruby_inflector::to_plural;
// use ruby_inflector::to_singular;
fn main() {
  let camel_case_string: String = to_camel_case("some_string");
}

Contributing

This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

Dependencies

~2.1–3MB
~54K SLoC