Crate word_filter[−][src]
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.
Usage
An example of a functional Word Filter using this crate is as follows:
use word_filter::{Options, WordFilter}; // Filtered words are words that should be detected by the WordFilter. let filtered_words = &["foo"]; // Exceptions are words that should not be detected by the WordFilter, even if words inside them // are. let exceptions = &["foobar"]; // 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 = &[("f", "F")]; // All of these together are used to create a WordFilter. let word_filter = WordFilter::new( filtered_words, exceptions, separators, aliases, Options::default(), ); // The word filter will both identify and censor the word "foo". assert!(word_filter.check("Should censor foo")); assert_eq!(word_filter.censor("Should censor foo"), "Should censor ***"); // The word filter does not identify or censor the word "foobar". assert!(!word_filter.check("Should not censor foobar")); assert_eq!(word_filter.censor("Should not censor foobar"), "Should not censor foobar"); // The word filter will ignore separators while matching. assert!(word_filter.check("Should censor f o_o")); assert_eq!(word_filter.censor("Should censor f o_o"), "Should censor *****"); // The word filter checks for aliases while matching. assert!(word_filter.check("Should censor Foo")); assert_eq!(word_filter.censor("Should censor Foo"), "Should censor ***");
Structs
Options | Options for |
WordFilter | A word filter for identifying filtered words within strings. |
Enums
CensorMode | The strategy for censoring in a |
RepeatedCharacterMatchMode | The strategy a |