docx_reader/documents/elements/
instr_text.rs

1use serde::ser::{SerializeStruct, Serializer};
2use serde::Serialize;
3
4use crate::documents::*;
5
6#[derive(Debug, Clone, PartialEq)]
7pub enum InstrText {
8	TOC(InstrToC),
9	TC(InstrTC),
10	PAGEREF(InstrPAGEREF),
11	HYPERLINK(InstrHyperlink),
12	Unsupported(String),
13}
14
15impl Serialize for InstrText {
16	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
17	where
18		S: Serializer,
19	{
20		match *self {
21			InstrText::TOC(ref s) => {
22				let mut t = serializer.serialize_struct("TOC", 2)?;
23				t.serialize_field("type", "toc")?;
24				t.serialize_field("data", s)?;
25				t.end()
26			}
27			InstrText::TC(ref s) => {
28				let mut t = serializer.serialize_struct("TC", 2)?;
29				t.serialize_field("type", "tc")?;
30				t.serialize_field("data", s)?;
31				t.end()
32			}
33			InstrText::PAGEREF(ref s) => {
34				let mut t = serializer.serialize_struct("PAGEREF", 2)?;
35				t.serialize_field("type", "pageref")?;
36				t.serialize_field("data", s)?;
37				t.end()
38			}
39			InstrText::HYPERLINK(ref s) => {
40				let mut t = serializer.serialize_struct("HYPERLINK", 2)?;
41				t.serialize_field("type", "hyperlink")?;
42				t.serialize_field("data", s)?;
43				t.end()
44			}
45			InstrText::Unsupported(ref s) => {
46				let mut t = serializer.serialize_struct("Unsupported", 2)?;
47				t.serialize_field("type", "unsupported")?;
48				t.serialize_field("data", s)?;
49				t.end()
50			}
51		}
52	}
53}