#cjk #lint #format #linter #formatter #english-words #copywriting

autocorrect

一款用于帮助改进文案、纠正 CJK(中文、日语、韩语)与英文之间空格、单词、标点符号的 Linter 和格式化工具。

62 个版本 (稳定)

2.11.1 2024 年 6 月 20 日
2.9.0 2023 年 12 月 5 日
2.8.5 2023 年 9 月 7 日
2.6.1 2023 年 1 月 17 日
0.3.0 2020 年 6 月 4 日

文本处理 中排名 #59

MIT 许可证

280KB
7K SLoC

AutoCorrrect for Rust

Go GitHub release (latest by date) Docker Image Version (latest semver) Crates.io NPM Documentation

一款用于帮助改进文案、纠正 CJK(中文、日语、韩语)与英文之间空格、标点符号的 Linter 和格式化工具。

类似于 ESlint、Rubocop、Gofmt 等工具,AutoCorrect 允许我们检查源代码,并以带有修正建议的彩色 diff 的形式输出。您可以将它集成到 CI(GitLab CI、GitHub Action、Travis CI...)中以检查源代码中的内容。识别文件名,并找到字符串和注释部分进行自动纠正。

基于 Rust 编写的 CLI 工具,用于“自动纠正”或“检查并建议”文案,针对 CJK(中文、日语、韩语)与英文混写的场景,补充正确的空格,并尝试以安全的方式自动纠正标点符号等。

类似于 ESlint、Rubocop、Gofmt 等工具,AutoCorrect 可以用于 CI 环境,它提供 Lint 功能,可以方便地检测出项目中存在问题的文案,起到统一规范的作用。

支持各种类型的源代码文件,能够自动识别文件名,并准确找到字符串、注释进行自动纠正。

此方案最早于 2013 年 出现在 Ruby China 的项目中,并逐步完善规则细节,当前准确率较高(极少数异常情况),您可以放心使用它来辅助您完成自动纠正操作。

功能

  • 自动在 CJK(中文、日语、韩语)和英文单词之间添加空格。
  • 支持多种文件内容(HTML、YAML、Rust、Go、SQL、Ruby、Python、Objective-C、Swift、Java、Kotlin、Dart、JavaScript、CSharp...)。
  • 全角字符转换为半角字符(仅针对 [a-zA-Z0-9],以及时间中的 )。
  • 将 CJK 附近的标点符号更正为全角。
  • 执行 Lint 检查并输出 diff 或 JSON 结果,因此您可以将其集成到任何地方(GitLab CI、GitHub Action、VS Code、Vim、Emacs...)。
  • 允许使用 .gitignore.autocorrectignore 忽略您想要忽略的文件。

用法

在您的 Cargo.toml 中

[dependencies]
autocorrect = "1.0.0"

使用 autocorrect::format 格式化纯文本。

extern crate autocorrect;

fn main() {
	println!("{}", autocorrect::format("长桥LongBridge App下载"));
	// => "长桥 LongBridge App 下载"

	println!("{}", autocorrect::format("Ruby 2.7版本第1次发布"));
	// => "Ruby 2.7 版本第 1 次发布"

	println!("{}", autocorrect::format("于3月10日开始"));
	// => "于 3 月 10 日开始"

	println!("{}", autocorrect::format("包装日期为2013年3月10日"));
	// => "包装日期为 2013 年 3 月 10 日"

	println!("{}", autocorrect::format("全世界已有数百家公司在生产环境中使用Rust,以达到快速、跨平台、低资源占用的目的。"));
	// => "全世界已有数百家公司在生产环境中使用 Rust,以达到快速、跨平台、低资源占用的目的。"

	println!("{}", autocorrect::format("既に、世界中の数百という企業がRustを採用し、高速で低リソースのクロスプラットフォームソリューションを実現しています。"));
	// => "既に、世界中の数百という企業が Rust を採用し、高速で低リソースのクロスプラットフォームソリューションを実現しています。"

	println!("{}", autocorrect::format("전 세계 수백 개의 회사가 프로덕션 환경에서 Rust를 사용하여 빠르고, 크로스 플랫폼 및 낮은 리소스 사용량을 달성했습니다."));
	// => "전 세계 수백 개의 회사가 프로덕션 환경에서 Rust 를 사용하여 빠르고, 크로스 플랫폼 및 낮은 리소스 사용량을 달성했습니다."

	println!("{}", autocorrect::format("需要符号?自动转换全角字符、数字:我们将在16:32分出发去CBD中心.")
	// => "需要符号?自动转换全角字符、数字:我们将在 16:32 分出发去 CBD 中心。"
```

Use `autocorrect::format_for` to format html content.

```rust
extern crate autocorrect;

fn main() {
	let html = r#"
	<article>
	<h1>这是Heading标题</h1>
	<div class="content">
	<p>你好Rust世界<strong>Bold文本</strong></p>
	<p>这是第二行p标签</p>
	</div>
	</article>
	"#;

	println!("{}", autocorrect::format_for(html, "html"));
	// <article>
	// <h1>这是 Heading 标题</h1>
	// <div class="content">
	//     <p>你好 Rust 世界<strong>Bold 文本</strong></p>
	//     <p>这是第二行 p 标签</p>
	// </div>
	// </article>
}

许可证

本项目受 MIT 许可证许可。

依赖项

约 8-17MB
~228K SLoC