docx_reader/documents/elements/
numbering_property.rs

1use serde::ser::{SerializeStruct, Serializer};
2use serde::Serialize;
3
4use super::{IndentLevel, NumberingId};
5
6#[derive(Debug, Clone, PartialEq)]
7pub struct NumberingProperty {
8	pub id: Option<NumberingId>,
9	pub level: Option<IndentLevel>,
10}
11
12impl Default for NumberingProperty {
13	fn default() -> Self {
14		NumberingProperty {
15			id: None,
16			level: None,
17		}
18	}
19}
20
21impl NumberingProperty {
22	pub fn new() -> NumberingProperty {
23		Default::default()
24	}
25
26	pub fn id(mut self, id: NumberingId) -> NumberingProperty {
27		self.id = Some(id);
28		self
29	}
30
31	pub fn add_num(mut self, id: NumberingId, level: IndentLevel) -> NumberingProperty {
32		self.id = Some(id);
33		self.level = Some(level);
34		self
35	}
36}
37
38impl Serialize for NumberingProperty {
39	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
40	where
41		S: Serializer,
42	{
43		let mut t = serializer.serialize_struct("NumberProperty", 2)?;
44		let mut id: Option<usize> = None;
45		if let Some(n) = &self.id {
46			id = Some(n.id);
47		}
48		t.serialize_field("id", &id)?;
49
50		let mut level: Option<usize> = None;
51		if let Some(n) = &self.level {
52			level = Some(n.val);
53		}
54		t.serialize_field("level", &level)?;
55		t.end()
56	}
57}