#name #text #changer #parser

names-changer

将 SQL 方案的名称从驼峰式转换为蛇形

2 个版本

0.2.1 2021 年 2 月 2 日
0.2.0 2021 年 1 月 31 日
0.1.1 2021 年 1 月 28 日
0.1.0 2021 年 1 月 28 日

#1762 in 文本处理

MIT/Apache

12KB
125

names-changer

将 SQL 方案的名称从驼峰式转换为蛇形。

以 str 为数据。此 crate #[names_changer] 提供了 trait 方法 .camel_to_snake(),将名称从驼峰式转换为蛇形。该 trait 搜索匹配该模式的单词并将它们转换为蛇形。

入门

首先,您必须将此依赖项添加到您的 Cargo.toml

[dev-dependencies]
names-changer = "0.2.1"

此外,您必须使用 use 语句导入过程宏

use names_changer::NamesChanger;

示例用法

#[cfg(test)]
mod tests {
   use names_changer::NamesChanger;

   // Not needed for this example, but useful in general
   use super::*;

   #[test]
   fn test_name_change() {
       let content = "TABLE ClientTokensRef IS 'text';";
       let change_content = content.camel_to_snake();

       assert_eq!("TABLE client_tokens_ref IS 'text';", change_content)
   }
}

为什么是它?

这是为了更新包含大写字母的旧 SQL 方案名称,例如。

#[cfg(test)]
mod tests {
   use names_changer::NamesChanger;
   use heck::SnakeCase;

   #[test]
   fn test_names_changer_to_snake_case() {
       let content = "TABLE ClientTokensRef IS 'text';";
       
       assert_eq!("TABLE client_tokens_ref IS 'text';", content.camel_to_snake())
   }

   #[test]
   fn test_classic_to_snake_case() {
       let content = "TABLE ClientTokensRef IS 'text';";

       assert_eq!("table_client_tokens_ref_is_text", content.to_snake_case()())
   }
}

更新内容

0.2.1

  • 修复了跳过小词的问题,例如“idExt”,“idEx”,“dE”。

0.2.0

  • 修复了方法名称问题
  • 添加了对没有空格的段的递归处理:从“(ClientRefA (ClientRefB (ClientRefC ((ClientRefE (id)))))”我们得到“(client_ref_a (client_ref_b (client_ref_c ((client_ref_e (id)))))”
  • 添加了测试
  • case crate(存在缩写词问题)已被 heck 替换

缺点:需要大量资源,未优化。

待办事项

  • 修复警告
  • 优化代码
  • 添加异步处理?

许可证

此项目受以下许可证之一许可:

依赖关系

~2.7–3.5MB
~62K SLoC