Crate word_filter[−][src]
Expand description
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.
Usage
WordFilter
s must be created at compile-time using the
word_filter_codegen
crate. The generated code can then
be include!
ed and used.
Example
For example, a simple WordFilter
can be generated by the following.
First, add both the word_filter
and word_filter_codegen
crates to the Cargo.toml
[dependencies]
and [build-dependencies]
lists respectively.
... [dependencies] word_filter = "0.7.0" [build-dependencies] word_filter_codegen = "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 ***.");
Modules
Macros for creating censors to be used in a WordFilter
.
Macros
Creates a censor replacing every grapheme with the given string.
Creates a sensor replacing the full matched words with the given string.
Structs
A word filter for identifying filtered words within strings.