use std::collections::HashSet;
use std::fmt;
use crate::parser::canonical_filter_name;
#[derive(Default)]
pub struct ParserOptions {
custom_filters: HashSet<String>,
}
impl fmt::Debug for ParserOptions {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("ParserOptions")
.field("custom_filters", &self.custom_filters)
.finish()
}
}
impl ParserOptions {
pub fn new() -> Self {
Self::default()
}
pub fn register_custom_filter(&mut self, name: impl Into<String>) -> &mut Self {
let canonical = canonical_filter_name(&name.into());
self.custom_filters.insert(canonical);
self
}
pub fn register_custom_filters<I, S>(&mut self, names: I) -> &mut Self
where
I: IntoIterator<Item = S>,
S: Into<String>,
{
for name in names {
self.register_custom_filter(name);
}
self
}
pub(crate) fn has_custom_filter(&self, canonical: &str) -> bool {
self.custom_filters.contains(canonical)
}
}