xlsbye-xml 0.1.0

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

pub fn write_relationships(writer: impl Write, rels: &[Relationship]) -> Result<()> {
    let mut writer = XmlWriter::new(writer);
    writer.write_xml_declaration()?;
    writer.write_start_element_with_ns(
        "Relationships",
        [("", PACKAGE_RELS_NS)],
        std::iter::empty::<(&str, &str)>(),
    )?;

    for rel in rels {
        let mut attrs = vec![
            ("Id".to_string(), rel.id.clone()),
            ("Type".to_string(), rel.rel_type.clone()),
            ("Target".to_string(), rel.target.clone()),
        ];
        if rel.target_mode == TargetMode::External {
            attrs.push(("TargetMode".to_string(), "External".to_string()));
        }
        writer.write_empty_element("Relationship", attrs)?;
    }

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