katana-document-viewer 0.1.4

KatanA document viewer artifact, render evaluation, and export foundation.
Documentation
const BROKEN_SVG_XMLNS: &str = "%22<http://www.w3.org/2000/svg%22>";
const ENCODED_SVG_XMLNS: &str = "%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20";

pub(crate) struct HtmlFragmentNormalizer;

impl HtmlFragmentNormalizer {
    pub(crate) fn normalize(fragment: &str) -> String {
        fragment.replace(BROKEN_SVG_XMLNS, ENCODED_SVG_XMLNS)
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn normalizes_katana_fixture_svg_data_uri() {
        let fragment = r#"<img src="data:image/svg+xml,%3Csvg xmlns=%22<http://www.w3.org/2000/svg%22> width=%22128%22%3E" alt="icon">"#;

        let normalized = HtmlFragmentNormalizer::normalize(fragment);

        assert!(!normalized.contains("<http://www.w3.org/2000/svg"));
        assert!(normalized.contains("xmlns=%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20"));
    }
}