docx_rust/formatting/
borders.rs1use hard_xml::{XmlRead, XmlWrite};
2
3use crate::{
4 __setter, __xml_test_suites,
5 formatting::{BarBorder, BetweenBorder, BottomBorder, LeftBorder, RightBorder, TopBorder},
6};
7
8#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
10#[cfg_attr(test, derive(PartialEq))]
11#[xml(tag = "w:pBdr")]
12pub struct Borders<'a> {
13 #[xml(child = "w:top")]
14 pub top: Option<TopBorder<'a>>,
15 #[xml(child = "w:left")]
16 pub left: Option<LeftBorder<'a>>,
17 #[xml(child = "w:bottom")]
18 pub bottom: Option<BottomBorder<'a>>,
19 #[xml(child = "w:right")]
20 pub right: Option<RightBorder<'a>>,
21 #[xml(child = "w:between")]
22 pub between: Option<BetweenBorder<'a>>,
23 #[xml(child = "w:bar")]
24 pub bar: Option<BarBorder<'a>>,
25}
26
27impl<'a> Borders<'a> {
28 __setter!(top: Option<TopBorder<'a>>);
29 __setter!(bottom: Option<BottomBorder<'a>>);
30 __setter!(left: Option<LeftBorder<'a>>);
31 __setter!(right: Option<RightBorder<'a>>);
32 __setter!(between: Option<BetweenBorder<'a>>);
33}
34
35__xml_test_suites!(
36 Borders,
37 Borders::default(),
38 r#"<w:pBdr/>"#,
39 Borders::default().top(TopBorder::default()),
40 r#"<w:pBdr><w:top w:val="none"/></w:pBdr>"#,
41 Borders::default().bottom(BottomBorder::default()),
42 r#"<w:pBdr><w:bottom w:val="none"/></w:pBdr>"#,
43 Borders::default().left(LeftBorder::default()),
44 r#"<w:pBdr><w:left w:val="none"/></w:pBdr>"#,
45 Borders::default().right(RightBorder::default()),
46 r#"<w:pBdr><w:right w:val="none"/></w:pBdr>"#,
47 Borders::default().between(BetweenBorder::default()),
48 r#"<w:pBdr><w:between w:val="none"/></w:pBdr>"#,
49);