1use crate::writer::{Result, XmlWriter};
2use std::io::Write;
3use xlsbye_core::rels::{Relationship, TargetMode};
4use xlsbye_core::xml_names::PACKAGE_RELS_NS;
5
6pub fn write_relationships(writer: impl Write, rels: &[Relationship]) -> Result<()> {
7 let mut writer = XmlWriter::new(writer);
8 writer.write_xml_declaration()?;
9 writer.write_start_element_with_ns(
10 "Relationships",
11 [("", PACKAGE_RELS_NS)],
12 std::iter::empty::<(&str, &str)>(),
13 )?;
14
15 for rel in rels {
16 let mut attrs = vec![
17 ("Id".to_string(), rel.id.clone()),
18 ("Type".to_string(), rel.rel_type.clone()),
19 ("Target".to_string(), rel.target.clone()),
20 ];
21 if rel.target_mode == TargetMode::External {
22 attrs.push(("TargetMode".to_string(), "External".to_string()));
23 }
24 writer.write_empty_element("Relationship", attrs)?;
25 }
26
27 writer.write_end_element("Relationships")?;
28 Ok(())
29}