1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
use serde::Serialize; use crate::documents::BuildXML; use crate::xml_builder::*; #[derive(Debug, Clone, PartialEq, Serialize)] #[serde(rename_all = "camelCase")] pub struct DocumentRels { pub has_comments: bool, pub has_numberings: bool, } impl DocumentRels { pub fn new() -> DocumentRels { Default::default() } } impl Default for DocumentRels { fn default() -> Self { Self { has_comments: false, has_numberings: false, } } } impl BuildXML for DocumentRels { fn build(&self) -> Vec<u8> { let mut b = XMLBuilder::new(); b = b .declaration(None) .open_relationships("http://schemas.openxmlformats.org/package/2006/relationships") .relationship( "rId1", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles", "styles.xml", ) .relationship( "rId2", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable", "fontTable.xml", ) .relationship( "rId3", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings", "settings.xml", ); if self.has_comments { b = b.relationship( "rId4", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments", "comments.xml", ) } if self.has_numberings { b = b.relationship( "rId5", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering", "numbering.xml", ) } b.close().build() } }