word_filter
A robust implementation of a Word Filter.
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 screening user-generated text in chat applications, online games, and many other contexts.
Usage
An example of a functional Word Filter using this crate is as follows:
use ;
// Filtered words are words that should be detected by the WordFilter.
let filtered_words = &;
// Exceptions are words that should not be detected by the WordFilter, even if words inside them
// are.
let exceptions = &;
// Separators are characters that can appear between letters within filtered words.
let separators = &;
// Aliases define characters that can be found in place of other characters in a match.
let aliases = &;
// All of these together are used to create a WordFilter.
let word_filter = new;
// The word filter will both identify and censor the word "foo".
assert!;
assert_eq!;
// The word filter does not identify or censor the word "foobar".
assert!;
assert_eq!;
// The word filter will ignore separators while matching.
assert!;
assert_eq!;
// The word filter checks for aliases while matching.
assert!;
assert_eq!;
See the documentation for more in-depth usage.
Minimum Supported Rust Version
This crate is guaranteed to compile on stable rustc 1.36.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.