xlsbye-xml 0.1.0

SpreadsheetML XML writer for xlsbye
Documentation
use crate::writer::{Result, XmlWriter};
use std::io::Write;
use xlsbye_core::xml_names::CONTENT_TYPES_NS;

pub fn write_content_types(
    writer: impl Write,
    defaults: &[(String, String)],
    overrides: &[(String, String)],
) -> Result<()> {
    let mut writer = XmlWriter::new(writer);
    writer.write_xml_declaration()?;
    writer.write_start_element_with_ns(
        "Types",
        [("", CONTENT_TYPES_NS)],
        std::iter::empty::<(&str, &str)>(),
    )?;

    for (extension, content_type) in defaults {
        writer.write_empty_element(
            "Default",
            [
                ("Extension".to_string(), extension.clone()),
                ("ContentType".to_string(), content_type.clone()),
            ],
        )?;
    }

    for (part_name, content_type) in overrides {
        writer.write_empty_element(
            "Override",
            [
                ("PartName".to_string(), part_name.clone()),
                ("ContentType".to_string(), content_type.clone()),
            ],
        )?;
    }

    writer.write_end_element("Types")?;
    Ok(())
}