#![deny(missing_docs)]
pub mod errors;
mod parse;
pub mod rules;
mod sanitize;
mod tests;
use crate::errors::SanitizeError;
use crate::rules::Rules;
use std::error::Error;
pub fn sanitize_bytes(rules: &Rules, input: &[u8]) -> Result<Vec<u8>, SanitizeError> {
fn inner(rules: &Rules, input: &[u8]) -> Result<Vec<u8>, Box<dyn Error>> {
let dom = parse::parse_dom(input)?;
let new_document = sanitize::sanitize_dom(&dom, rules);
let result_bytes = parse::unparse_document(&new_document)?;
Ok(result_bytes)
}
inner(rules, input).map_err(SanitizeError)
}
pub fn sanitize_str(rules: &Rules, input: &str) -> Result<String, SanitizeError> {
let result_bytes = sanitize_bytes(rules, input.as_bytes())?;
let result_string = String::from_utf8(result_bytes).map_err(|e| SanitizeError(Box::new(e)))?;
Ok(result_string)
}