17 releases (7 breaking)
0.8.1 | Aug 29, 2021 |
---|---|
0.7.0 | Aug 1, 2021 |
0.6.0 | Jun 23, 2021 |
0.1.8 | Mar 8, 2021 |
#1547 in Text processing
365 downloads per month
Used in word_filter_codegen
99KB
1.5K
SLoC
word_filter
A Word Filter for filtering text.
A Word Filter is a system for identifying and censoring specific words or phrases in strings. Common usage includes censoring vulgar or profane language and preventing spam or vandelism in user-provided content.
The Word Filter implementation provided here allows for advanced filtering functionality, including:
- Finding and censoring filtered words.
- Ignoring words that are considered "exceptions".
- Allowing specification of "aliases", i.e. strings that can replace other strings (for example, an alias could be created to replace the letter "a" with the character "@").
- Ignoring specified separators (such as spaces or other characters) between letters of filtered words.
A Word Filter is useful for checking and censoring user-generated text in chat applications, online games, and many other contexts.
Usage
The most common usage for this crate is to generate a WordFilter
at compile time using a
build script using the
codegen
module. See the following simple
example and the documentation for further details.
Example
For example, a simple WordFilter
can be generated by the following.
First, add the word_filter
crate to both the Cargo.toml
[dependencies]
and
[build-dependencies]
lists.
[dependencies]
word_filter = "0.7.0"
[build-dependencies]
word_filter = "0.7.0"
Next, generate the WordFilter
in the build.rs
file.
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")
);
}
And finally, include the generated code in the lib.rs
file.
include!(concat!(env!("OUT_DIR"), "/codegen.rs"));
assert!(FILTER.censor("Should censor foo."), "Should censor ***.");
Minimum Supported Rust Version
This crate is guaranteed to compile on stable rustc 1.51.0
and up.
License
This project is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~1.5MB
~26K SLoC