docx_reader/documents/elements/
delete.rs

1use 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}