17 个版本 (7 个破坏性更新)
0.8.1 | 2021 年 8 月 29 日 |
---|---|
0.7.0 | 2021 年 8 月 1 日 |
0.6.0 | 2021 年 6 月 23 日 |
0.1.8 | 2021 年 3 月 8 日 |
#1237 in 文本处理
每月下载量 276
用于 word_filter_codegen
99KB
1.5K SLoC
word_filter
用于过滤文本的词过滤器。
词过滤器是一个用于识别和屏蔽字符串中特定单词或短语的系统。常见用途包括屏蔽粗俗或亵渎的语言,以及防止用户提供的内客中的垃圾邮件或恶意破坏。
这里提供的词过滤器实现允许进行高级过滤功能,包括
- 查找和屏蔽过滤单词。
- 忽略被认为是“例外”的单词。
- 允许指定“别名”,即可以替换其他字符串的字符串(例如,可以创建一个别名来将字母“a”替换为字符“@”)。
- 忽略过滤单词字母之间的指定分隔符(例如空格或其他字符)。
词过滤器对于检查和屏蔽聊天应用程序、在线游戏和其他许多环境中的用户生成文本非常有用。
用法
此 crate 最常见的用法是在编译时使用 构建脚本 和 codegen
模块生成 WordFilter
。有关详细信息,请参阅以下简单示例和文档。
示例
例如,可以使用以下方法生成一个简单的 WordFilter
。
首先,将 word_filter
crate 添加到 Cargo.toml
文件的 [dependencies]
和 [build-dependencies]
列表中。
[dependencies]
word_filter = "0.7.0"
[build-dependencies]
word_filter = "0.7.0"
然后,在 build.rs
文件中生成 WordFilter
。
use std::{
env,
fs::File,
io::{BufWriter, Write},
path::Path,
};
use word_filter::codegen::{Visibility, WordFilterGenerator};
fn main() {
let path = Path::new(&env::var("OUT_DIR").unwrap()).join("codegen.rs");
let mut file = BufWriter::new(File::create(&path).unwrap());
writeln!(
&mut file,
"{}",
WordFilterGenerator::new()
.visibility(Visibility::Pub)
.word("foo")
.generate("FILTER")
);
}
最后,将生成的代码包含在 lib.rs
文件中。
include!(concat!(env!("OUT_DIR"), "/codegen.rs"));
assert!(FILTER.censor("Should censor foo."), "Should censor ***.");
最低支持的 Rust 版本
此 crate 保证在稳定版本的 rustc 1.51.0
及以上版本上编译。
许可
本项目受以下任一许可的许可:
- Apache许可证,版本2.0(《LICENSE-APACHE》或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,将按上述方式双重许可,不附加任何额外条款或条件。
依赖项
约2MB
约29K SLoC