pub fn escape_xml(s: &str) -> String {
s.replace('&', "&")
.replace('<', "<")
.replace('>', ">")
}
pub fn escape_xml_attr(s: &str) -> String {
escape_xml(s)
.replace('"', """)
.replace('\'', "'")
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_escape_xml() {
assert_eq!(escape_xml("a & b"), "a & b");
assert_eq!(escape_xml("<tag>"), "<tag>");
assert_eq!(escape_xml("a < b & c > d"), "a < b & c > d");
}
#[test]
fn test_escape_xml_attr() {
assert_eq!(
escape_xml_attr("say \"hello\""),
"say "hello""
);
assert_eq!(
escape_xml_attr("it's"),
"it's"
);
assert_eq!(
escape_xml_attr("<a href=\"test\">link</a>"),
"<a href="test">link</a>"
);
}
#[test]
fn test_escape_empty() {
assert_eq!(escape_xml(""), "");
assert_eq!(escape_xml_attr(""), "");
}
}