docx_rs/documents/
taskpanes.rs

1use serde::{Deserialize, Serialize};
2use std::io::Write;
3
4use crate::documents::BuildXML;
5use crate::xml_builder::*;
6
7#[derive(Serialize, Deserialize, Debug, PartialEq, Clone, Copy, Default)]
8pub struct Taskpanes {}
9
10impl Taskpanes {
11    pub fn new() -> Self {
12        Default::default()
13    }
14}
15
16impl BuildXML for Taskpanes {
17    fn build_to<W: Write>(
18        &self,
19        stream: xml::writer::EventWriter<W>,
20    ) -> xml::writer::Result<xml::writer::EventWriter<W>> {
21        XMLBuilder::from(stream)
22            .declaration(Some(true))?
23            .open_taskpanes("http://schemas.microsoft.com/office/webextensions/taskpanes/2010/11")?
24            .open_taskpane("", "1", "350", "1")?
25            .webextensionref(
26                "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
27                "rId1",
28            )?
29            .close()?
30            .close()?
31            .into_inner()
32    }
33}
34
35#[cfg(test)]
36mod tests {
37
38    use super::*;
39    #[cfg(test)]
40    use pretty_assertions::assert_eq;
41    use std::str;
42
43    #[test]
44    fn test_build() {
45        let c = Taskpanes::new();
46        let b = c.build();
47        assert_eq!(
48            str::from_utf8(&b).unwrap(),
49            r#"<?xml version="1.0" encoding="UTF-8" standalone="yes"?><wetp:taskpanes xmlns:wetp="http://schemas.microsoft.com/office/webextensions/taskpanes/2010/11"><wetp:taskpane dockstate="" visibility="1" width="350" row="1"><wetp:webextensionref xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId1" /></wetp:taskpane></wetp:taskpanes>"#
50        );
51    }
52}