#snake #inflector #inflection #camel #pluralize

ruby_inflector

为 Rust 添加基于 String 的词形变化。支持蛇形、横线、驼峰、句子、类、标题和表格形式,以及序数化、非序数化、去模块化、外键、复数化/单数化等功能,作为特性和纯函数作用于 String 类型。旨在尽可能模仿 Ruby 的 ActiveSupport::Inflector 行为。https://api.rubyonrails.net.cn/classes/ActiveSupport/Inflector.html

6 个版本

0.0.10 2023年6月24日
0.0.9 2023年6月24日

#361 in 文本处理

Download history 64/week @ 2024-03-12 47/week @ 2024-03-19 43/week @ 2024-03-26 55/week @ 2024-04-02 58/week @ 2024-04-09 55/week @ 2024-04-23 8/week @ 2024-04-30 17/week @ 2024-05-07 5/week @ 2024-05-14 116/week @ 2024-05-21 103/week @ 2024-05-28 35/week @ 2024-06-04 3/week @ 2024-06-11 67/week @ 2024-06-18 24/week @ 2024-06-25

131 每月下载
pks 中使用

BSD-2-Clause

125KB
3K SLoC

Rust 词形变化器

此项目是从 https://github.com/chrislearn/cruet 分支出来的。

此库的目的是尽可能接近地模仿 https://api.rubyonrails.net.cn/classes/ActiveSupport/Inflector.html 中的行为,以便于 Rust 工具的实现。

CI Audit

添加基于 String 的词形变化。支持蛇形、下划线、火车、驼峰、句子、类、标题和表格形式,以及序数化、非序数化、去模块化、外键、复数化/单数化等特性,作为特性和纯函数作用于 &str 和 String 类型。


文档

文档可在 README 中找到或通过以下 Rust 文档访问。

Rust 文档及示例


安装

作为 crate

[dependencies]
ruby_inflector = "*"

自行编译

  1. 安装 Rust 和 cargo
  2. git clone https://github.com/alexevanczuk/ruby_inflector
  3. 库:cd ruby_inflector && cargo build --release --lib
  4. 库位于 target/release 目录中

用法 / 示例

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

或者

// 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");
}

贡献

本项目旨在为合作提供一个安全、友好的空间,贡献者应遵守 贡献者公约 代码行为准则。

依赖关系

~2.1–3MB
~53K SLoC