diff --git a/docx-core/src/documents/elements/table_row.rs b/docx-core/src/documents/elements/table_row.rs index 565eb8b..0d85304 100644 --- a/docx-core/src/documents/elements/table_row.rs +++ b/docx-core/src/documents/elements/table_row.rs @@ -1,7 +1,7 @@ use serde::ser::{SerializeStruct, Serializer}; use serde::Serialize; -use super::{TableCell, TableRowProperty}; +use super::{TableCell, TableRowProperty, Delete}; use crate::xml_builder::*; use crate::{documents::BuildXML, HeightRule}; @@ -67,6 +67,11 @@ impl TableRow { self.property = self.property.height_rule(r); self } + + pub fn delete(mut self, d: Delete) -> TableRow { + self.property = self.property.delete(d); + self + } } impl BuildXML for TableRow { diff --git a/docx-core/src/documents/elements/table_row_property.rs b/docx-core/src/documents/elements/table_row_property.rs index e846597..3bd880d 100644 --- a/docx-core/src/documents/elements/table_row_property.rs +++ b/docx-core/src/documents/elements/table_row_property.rs @@ -1,5 +1,6 @@ use serde::Serialize; +use super::*; use crate::xml_builder::*; use crate::{documents::BuildXML, HeightRule}; @@ -12,6 +13,8 @@ pub struct TableRowProperty { width_before: Option, row_height: Option, height_rule: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub del: Option, } impl TableRowProperty { @@ -48,6 +51,11 @@ impl TableRowProperty { self.height_rule = Some(r); self } + + pub fn delete(mut self, d: Delete) -> Self { + self.del = Some(d); + self + } } impl Default for TableRowProperty { @@ -59,13 +67,16 @@ impl Default for TableRowProperty { width_before: None, row_height: None, height_rule: None, + del: None, } } } impl BuildXML for TableRowProperty { fn build(&self) -> Vec { - let mut b = XMLBuilder::new().open_table_row_property(); + let mut b = XMLBuilder::new() + .open_table_row_property() + .add_optional_child(&self.del); if let Some(h) = self.row_height { b = b.table_row_height( &format!("{}", h), diff --git a/docx-core/src/reader/table_row.rs b/docx-core/src/reader/table_row.rs index 56197f8..66bd93f 100644 --- a/docx-core/src/reader/table_row.rs +++ b/docx-core/src/reader/table_row.rs @@ -17,6 +17,7 @@ impl ElementReader for TableRow { let mut grid_before = None; let mut width_before = None; let mut row_height = None; + let mut del = None; let mut height_rule = Some(HeightRule::AtLeast); loop { let e = r.next(); @@ -68,6 +69,11 @@ impl ElementReader for TableRow { } } } + XMLElement::Delete => { + if let Ok(d) = Delete::read(r, &attributes) { + del = Some(d); + } + } _ => {} } } @@ -99,6 +105,10 @@ impl ElementReader for TableRow { row = row.height_rule(height_rule); } + if let Some(del) = del { + row = row.delete(del); + } + return Ok(row); } } diff --git a/docx-wasm/js/index.ts b/docx-wasm/js/index.ts index e2ebdf3..dc0b382 100644 --- a/docx-wasm/js/index.ts +++ b/docx-wasm/js/index.ts @@ -654,6 +654,10 @@ export class Docx { row = row.row_height(r.height); } + if (r.del) { + row = row.delete(r.del.author, r.del.date); + } + if (r.hRule) { switch (r.hRule) { case "auto": { diff --git a/docx-wasm/js/json/table.ts b/docx-wasm/js/json/table.ts index a94bdc5..795affc 100644 --- a/docx-wasm/js/json/table.ts +++ b/docx-wasm/js/json/table.ts @@ -4,6 +4,7 @@ import { HeightRule } from "../table-row"; import { TextDirectionType } from "../table-cell"; import { ShadingJSON } from "./shading"; import { TableLayoutType } from "../table"; +import { DeleteJSON } from ".."; export type TableCellChildJSON = ParagraphJSON; @@ -33,6 +34,7 @@ export type TableRowPropertyJSON = { heightRule: HeightRule | null; widthAfter: number | null; widthBefore: number | null; + del?: DeleteJSON["data"]; }; export type TableCellJSON = { diff --git a/docx-wasm/js/table-row.ts b/docx-wasm/js/table-row.ts index aa9bee7..194093b 100644 --- a/docx-wasm/js/table-row.ts +++ b/docx-wasm/js/table-row.ts @@ -7,6 +7,7 @@ export class TableRow { hasNumberings = false; height: number | null = null; hRule: HeightRule = "atLeast"; + del: { author: string; date: string } | null = null; addCell(cell: TableCell) { if (cell.hasNumberings) { @@ -25,4 +26,9 @@ export class TableRow { this.hRule = r; return this; } + + delete(author: string, date: string) { + this.del = { author, date }; + return this; + } } diff --git a/docx-wasm/src/table_row.rs b/docx-wasm/src/table_row.rs index 1c9f709..d14093e 100644 --- a/docx-wasm/src/table_row.rs +++ b/docx-wasm/src/table_row.rs @@ -19,7 +19,9 @@ impl TableRow { #[wasm_bindgen] impl TableRow { pub fn add_cell(mut self, cell: TableCell) -> TableRow { - self.0.cells.push(docx_rs::TableRowChild::TableCell(cell.take())); + self.0 + .cells + .push(docx_rs::TableRowChild::TableCell(cell.take())); self } @@ -32,4 +34,11 @@ impl TableRow { self.0 = self.0.height_rule(r); self } + + pub fn delete(mut self, author: &str, date: &str) -> Self { + self.0 = self + .0 + .delete(docx_rs::Delete::new().author(author).date(date)); + self + } }