docx_rust/formatting/
table_borders.rs

1use 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);