docx_rs/documents/elements/
fit_text.rs1use crate::documents::BuildXML;
2use crate::xml_builder::*;
3use serde::Serialize;
4use std::io::Write;
5
6#[derive(Debug, Clone, PartialEq, Serialize)]
7#[serde(rename_all = "camelCase")]
8pub struct FitText {
9 pub val: usize,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub id: Option<u32>,
12}
13
14impl FitText {
15 pub fn new(val: usize) -> Self {
16 Self { val, id: None }
17 }
18
19 pub fn id(mut self, id: u32) -> Self {
20 self.id = Some(id);
21 self
22 }
23}
24
25impl BuildXML for FitText {
26 fn build_to<W: Write>(
27 &self,
28 stream: crate::xml::writer::EventWriter<W>,
29 ) -> crate::xml::writer::Result<crate::xml::writer::EventWriter<W>> {
30 XMLBuilder::from(stream).fit_text(self.val, self.id)?.into_inner()
31 }
32}
33
34#[cfg(test)]
35mod tests {
36
37 use super::*;
38 #[cfg(test)]
39 use pretty_assertions::assert_eq;
40 use std::str;
41
42 #[test]
43 fn test_fit_text() {
44 let b = FitText::new(840).id(1266434317).build();
45 assert_eq!(
46 str::from_utf8(&b).unwrap(),
47 r#"<w:fitText w:val="840" w:id="1266434317" />"#
48 );
49 }
50
51 #[test]
52 fn test_fit_text_without_id() {
53 let b = FitText::new(840).build();
54 assert_eq!(str::from_utf8(&b).unwrap(), r#"<w:fitText w:val="840" />"#);
55 }
56}