docx_rust/formatting/
table_borders.rs1use hard_xml::{XmlRead, XmlWrite};
2
3use crate::{
4 __setter, __xml_test_suites,
5 formatting::{
6 BottomBorder, InsideHorizonBorder, InsideVerticalBorder, LeftBorder, RightBorder, TopBorder,
7 },
8};
9
10#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
11#[cfg_attr(test, derive(PartialEq))]
12#[xml(tag = "w:tblBorders")]
13pub struct TableBorders<'a> {
14 #[xml(child = "w:top")]
15 pub top: Option<TopBorder<'a>>,
16 #[xml(child = "w:left")]
17 pub left: Option<LeftBorder<'a>>,
18 #[xml(child = "w:bottom")]
19 pub bottom: Option<BottomBorder<'a>>,
20 #[xml(child = "w:right")]
21 pub right: Option<RightBorder<'a>>,
22 #[xml(child = "w:insideH")]
23 pub inside_horizon: Option<InsideHorizonBorder<'a>>,
24 #[xml(child = "w:insideV")]
25 pub inside_vertical: Option<InsideVerticalBorder<'a>>,
26}
27
28impl<'a> TableBorders<'a> {
29 __setter!(top: Option<TopBorder<'a>>);
30 __setter!(bottom: Option<BottomBorder<'a>>);
31}
32
33__xml_test_suites!(
34 TableBorders,
35 TableBorders::default(),
36 r#"<w:tblBorders/>"#,
37 TableBorders::default().top(TopBorder::default()),
38 r#"<w:tblBorders><w:top w:val="none"/></w:tblBorders>"#,
39 TableBorders::default().bottom(BottomBorder::default()),
40 r#"<w:tblBorders><w:bottom w:val="none"/></w:tblBorders>"#,
41);