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