docx_reader/documents/elements/
numbering_property.rs1use 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}