docx_reader/documents/elements/
delete.rs1use serde::ser::{SerializeStruct, Serializer};
2use serde::Serialize;
3
4use crate::documents::*;
5
6#[derive(Serialize, Debug, Clone, PartialEq)]
7pub struct Delete {
8 pub author: String,
9 pub date: String,
10 pub children: Vec<DeleteChild>,
11}
12
13#[derive(Debug, Clone, PartialEq)]
14pub enum DeleteChild {
15 Run(Run),
16}
17
18impl Serialize for DeleteChild {
19 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
20 where
21 S: Serializer,
22 {
23 match *self {
24 DeleteChild::Run(ref r) => {
25 let mut t = serializer.serialize_struct("Run", 2)?;
26 t.serialize_field("type", "run")?;
27 t.serialize_field("data", r)?;
28 t.end()
29 }
30 }
31 }
32}
33
34impl Default for Delete {
35 fn default() -> Delete {
36 Delete {
37 author: "unnamed".to_owned(),
38 date: "1970-01-01T00:00:00Z".to_owned(),
39 children: vec![],
40 }
41 }
42}
43
44impl Delete {
45 pub fn new() -> Delete {
46 Self {
47 children: vec![],
48 ..Default::default()
49 }
50 }
51
52 pub fn add_run(mut self, run: Run) -> Delete {
53 self.children.push(DeleteChild::Run(run));
54 self
55 }
56
57 pub fn author(mut self, author: impl Into<String>) -> Delete {
58 self.author = author.into();
59 self
60 }
61
62 pub fn date(mut self, date: impl Into<String>) -> Delete {
63 self.date = date.into();
64 self
65 }
66}