docx_rust/document/
table_grid.rs1use hard_xml::{XmlRead, XmlWrite};
2
3use crate::__xml_test_suites;
4use crate::document::GridColumn;
5
6#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
18#[cfg_attr(test, derive(PartialEq))]
19#[xml(tag = "w:tblGrid")]
20pub struct TableGrid {
21 #[xml(child = "w:gridCol")]
22 pub columns: Vec<GridColumn>,
23}
24
25impl TableGrid {
26 pub fn push_column<T: Into<GridColumn>>(mut self, col: T) -> Self {
27 self.columns.push(col.into());
28 self
29 }
30}
31
32impl From<Vec<isize>> for TableGrid {
33 fn from(cols: Vec<isize>) -> TableGrid {
34 TableGrid {
35 columns: cols.into_iter().map(Into::into).collect(),
36 }
37 }
38}
39
40__xml_test_suites!(
41 TableGrid,
42 TableGrid::default(),
43 "<w:tblGrid/>",
44 TableGrid::default().push_column(42),
45 r#"<w:tblGrid><w:gridCol w:w="42"/></w:tblGrid>"#,
46 TableGrid::default().push_column(42).push_column(42),
47 r#"<w:tblGrid><w:gridCol w:w="42"/><w:gridCol w:w="42"/></w:tblGrid>"#,
48 TableGrid::from(vec![42, 42]),
49 r#"<w:tblGrid><w:gridCol w:w="42"/><w:gridCol w:w="42"/></w:tblGrid>"#,
50);