use std::borrow::Cow;
use crate::encode::OutputEncoder;
#[derive(Clone, Copy, Debug, Default)]
pub struct JsonEncoder;
impl OutputEncoder for JsonEncoder {
fn encode<'a>(&self, input: &'a str) -> Cow<'a, str> {
if !input.contains("</") && !input.contains('\0') {
return Cow::Borrowed(input);
}
let no_nulls: String = input.chars().filter(|&c| c != '\0').collect();
let result = no_nulls.replace("</", "<\\/");
Cow::Owned(result)
}
}
#[must_use]
pub fn encode(input: &str) -> Cow<'_, str> {
JsonEncoder.encode(input)
}