Struct word_filter::WordFilter [−][src]
pub struct WordFilter<'a, const N: usize> { /* fields omitted */ }
Expand description
A word filter for identifying filtered words within strings.
A WordFilter
is constructed from filtered words, exceptions, separators,
and aliases. Each of those parameters are defined as follows:
- filtered words - strings that should be identified and censored by the
WordFilter
. - exceptions - strings that should explicitly not be identified and censored by the
WordFilter
. Any string that contains filtered word that is contained entirely inside an exception will be ignored. - separators - strings that may appear between characters in filtered words and exceptions.
- aliases - tuples defining alias strings that may replace source strings during matching.
These are of the form
(<source string>, <alias string>)
.
WordFilter
s are constructed at compile-time using the codegen
module. See crate-level
documentation for further information.
Implementations
Find all filtered words matched by input
.
Returns an Iterator
over all matched filtered words.
Example
Assuming a compile-time constructed WordFilter
FILTER
, defined in a build.rs
as:
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()
.word("foo")
.generate("FILTER")
);
}
this method is used as follows:
include!(concat!(env!("OUT_DIR"), "/codegen.rs"));
assert_eq!(FILTER.find("this string contains foo").collect::<Vec<_>>(), vec!["foo"]);
Find all raw string slices matched in input
.
Returns an iterator over all matched slices in input
.
/// # Example
Assuming a compile-time constructed WordFilter
FILTER
, defined in a build.rs
as:
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()
.word("foo")
.alias('o', 'a')
.generate("FILTER")
);
}
this method is used as follows:
include!(concat!(env!("OUT_DIR"), "/codegen.rs"));
assert_eq!(FILTER.find_raw("this string contains fao").collect::<Vec<_>>(), vec!["fao"]);
Check whether input
contains any filtered words.
Returns true
if matches are found, and false
otherwise.
Example
Assuming a compile-time constructed WordFilter
FILTER
, defined in a build.rs
as:
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()
.word("foo")
.generate("FILTER")
);
}
this method is used as follows:
include!(concat!(env!("OUT_DIR"), "/codegen.rs"));
assert!(FILTER.check("this string contains foo"));
Censor all filtered words within input
, replacing their occurances with the output of
censor
.
Returns a newly-allocated String
with all filtered words censored.
Example
Assuming a compile-time constructed WordFilter
FILTER
, defined in a build.rs
as:
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()
.word("foo")
.generate("FILTER")
);
}
this method is used as follows:
use word_filter::censor;
include!(concat!(env!("OUT_DIR"), "/codegen.rs"));
assert!(
FILTER.censor_with("this string contains foo", censor::replace_graphemes_with!("#")),
"this string contains ###"
);
Censor all filtered words within input
with a default censor of
censor::replace_graphemes_with("*")
.
Returns a newly-allocated String
with all filtered words censored.
Example
Assuming a compile-time constructed WordFilter
FILTER
, defined in a build.rs
as:
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()
.word("foo")
.generate("FILTER")
);
}
this method is used as follows:
include!(concat!(env!("OUT_DIR"), "/codegen.rs"));
assert!(FILTER.censor("this string contains foo"), "this string contains ***");