use wasm_bindgen::prelude::*;
use crate::HtmlSanitizer;
#[wasm_bindgen]
pub fn sanitize(input: &str) -> String {
HtmlSanitizer::new().sanitize_string(input)
}
#[wasm_bindgen]
pub struct WasmHtmlSanitizer {
inner: HtmlSanitizer,
}
impl Default for WasmHtmlSanitizer {
fn default() -> Self {
Self::new()
}
}
#[wasm_bindgen]
impl WasmHtmlSanitizer {
#[wasm_bindgen(constructor)]
pub fn new() -> Self {
Self {
inner: HtmlSanitizer::new(),
}
}
pub fn sanitize(&self, input: &str) -> String {
self.inner.sanitize_string(input)
}
#[wasm_bindgen(js_name = "removeTag")]
pub fn remove_tag(&mut self, name: &str) {
self.inner.allow_list.remove_tag(name);
}
#[wasm_bindgen(js_name = "addTag")]
pub fn add_tag(&mut self, name: &str, attrs: &str, url_attrs: &str) {
let attr: Vec<&str> = if attrs.is_empty() {
vec![]
} else {
attrs.split(',').map(|s| s.trim()).collect()
};
let url_attr: Vec<&str> = if url_attrs.is_empty() {
vec![]
} else {
url_attrs.split(',').map(|s| s.trim()).collect()
};
self.inner
.allow_list
.add_tag(crate::Tag::new(name, &attr, &url_attr));
}
#[wasm_bindgen(js_name = "addGlobalAttr")]
pub fn add_global_attr(&mut self, name: &str) {
self.inner.allow_list.global_attr.push(name.to_string());
}
}