use std::sync::Arc;
use crate::{
NORMALIZER_ID, NormalizeError, NormalizeOptions, NormalizeResult, WorkControl, pipeline,
resources::Resources,
};
#[derive(Clone)]
pub struct Normalizer {
resources: Arc<Resources>,
}
impl Normalizer {
pub fn normalizer_id(&self) -> &'static str {
NORMALIZER_ID
}
pub fn new() -> Result<Self, NormalizeError> {
Ok(Self {
resources: Resources::shared()?,
})
}
pub fn normalize(
&self,
input: &str,
options: &NormalizeOptions,
) -> Result<NormalizeResult, NormalizeError> {
self.normalize_controlled(input, options, &WorkControl::default())
}
pub fn normalize_controlled(
&self,
input: &str,
options: &NormalizeOptions,
control: &WorkControl,
) -> Result<NormalizeResult, NormalizeError> {
pipeline::run(input, options, control, &self.resources)
}
}