use core::fmt::{Result, Write};
use oxiplate_traits::Escaper;
#[allow(dead_code)]
#[allow(non_camel_case_types)]
pub enum YourEscaper {
foo,
bar,
}
impl Escaper for YourEscaper {
const DEFAULT: Self = Self::foo;
#[inline]
fn escape<W: Write + ?Sized>(&self, f: &mut W, value: &str) -> Result {
match self {
Self::foo => escape_foo(f, value),
Self::bar => bar_escaper(f, value),
}
}
}
#[inline]
fn escape_foo<W: Write + ?Sized>(f: &mut W, value: &'_ str) -> Result {
if !value.contains("foo") {
return f.write_str(value);
}
f.write_str(&value.replace("foo", "f00"))
}
#[inline]
fn bar_escaper<W: Write + ?Sized>(f: &mut W, value: &'_ str) -> Result {
if !value.contains("bar") {
return f.write_str(value);
}
f.write_str(&value.replace("bar", "b@r"))
}