docx_rs/documents/
taskpanes.rs1use 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}