#filter #word #string #censor

no-std word_filter

用于过滤文本的词过滤器

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 文本处理

Download history 201/week @ 2024-03-13 228/week @ 2024-03-20 104/week @ 2024-03-27 38/week @ 2024-04-03 31/week @ 2024-04-10 52/week @ 2024-04-17 16/week @ 2024-04-24 14/week @ 2024-05-01 44/week @ 2024-05-08 22/week @ 2024-05-15 59/week @ 2024-05-22 75/week @ 2024-05-29 50/week @ 2024-06-05 65/week @ 2024-06-12 92/week @ 2024-06-19 57/week @ 2024-06-26

每月下载量 276
用于 word_filter_codegen

MIT/Apache

99KB
1.5K SLoC

word_filter

GitHub Workflow Status codecov.io crates.io docs.rs MSRV License

用于过滤文本的词过滤器。

词过滤器是一个用于识别和屏蔽字符串中特定单词或短语的系统。常见用途包括屏蔽粗俗或亵渎的语言,以及防止用户提供的内客中的垃圾邮件或恶意破坏。

这里提供的词过滤器实现允许进行高级过滤功能,包括

  • 查找和屏蔽过滤单词。
  • 忽略被认为是“例外”的单词。
  • 允许指定“别名”,即可以替换其他字符串的字符串(例如,可以创建一个别名来将字母“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许可证定义的任何有意提交以包含在作品中的贡献,将按上述方式双重许可,不附加任何额外条款或条件。

依赖项

约2MB
约29K SLoC