docx_rust/formatting/
table_indent.rs1use hard_xml::{XmlRead, XmlWrite};
2
3use crate::{__string_enum, __xml_test_suites};
4
5#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
15#[cfg_attr(test, derive(PartialEq))]
16#[xml(tag = "w:tblInd")]
17pub struct TableIndent {
18 #[xml(attr = "w:w")]
19 pub value: Option<isize>,
20 #[xml(attr = "w:type")]
21 pub unit: Option<TableIndentUnit>,
22}
23
24impl From<isize> for TableIndent {
25 fn from(val: isize) -> Self {
26 TableIndent {
27 value: Some(val),
28 unit: None,
29 }
30 }
31}
32
33impl From<TableIndentUnit> for TableIndent {
34 fn from(val: TableIndentUnit) -> Self {
35 TableIndent {
36 value: None,
37 unit: Some(val),
38 }
39 }
40}
41
42impl From<(isize, TableIndentUnit)> for TableIndent {
43 fn from(val: (isize, TableIndentUnit)) -> Self {
44 TableIndent {
45 value: Some(val.0),
46 unit: Some(val.1),
47 }
48 }
49}
50
51#[derive(Debug, Clone)]
52#[cfg_attr(test, derive(PartialEq))]
53pub enum TableIndentUnit {
54 Auto,
55 Dxa,
56 Nil,
57 Pct,
58}
59
60__string_enum! {
61 TableIndentUnit {
62 Auto = "auto",
63 Dxa = "dxa",
64 Nil = "nil",
65 Pct = "pct",
66 }
67}
68
69__xml_test_suites!(
70 TableIndent,
71 TableIndent::default(),
72 "<w:tblInd/>",
73 TableIndent::from(42),
74 r#"<w:tblInd w:w="42"/>"#,
75 TableIndent::from(TableIndentUnit::Pct),
76 r#"<w:tblInd w:type="pct"/>"#,
77 TableIndent::from((42, TableIndentUnit::Dxa)),
78 r#"<w:tblInd w:w="42" w:type="dxa"/>"#,
79);