1use serde::{Serialize, Serializer};
2use serde::ser::SerializeStruct;
3use crate::{TmCaptures, TmPattern};
4
5impl Serialize for TmCaptures {
6 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer {
7 serializer.collect_map(self.inner.iter())
9 }
10}
11
12impl Serialize for TmPattern {
13 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer {
14 let mut s = serializer.serialize_struct("TmPattern", 16)?;
15 match self {
16 TmPattern::Include { include } => {
17 s.serialize_field("include", include)?;
18 }
19 TmPattern::Complete { name, comment, begin, begin_captures, end, end_captures, matches, captures, patterns } => {
20 if !comment.is_empty() {
21 s.serialize_field("comment", comment)?;
22 }
23 s.serialize_field("name", name)?;
24 if !begin.is_empty() {
25 s.serialize_field("begin", begin)?;
26 s.serialize_field("beginCaptures", begin_captures)?;
27 }
28 if !end.is_empty() {
29 s.serialize_field("begin", begin)?;
30 s.serialize_field("beginCaptures", end_captures)?;
31 }
32 if !matches.is_empty() {
33 s.serialize_field("match", matches)?;
34 s.serialize_field("captures", captures)?;
35 }
36 if !patterns.is_empty() {
37 s.serialize_field("patterns", patterns)?;
38 }
39 }
40 }
41 s.end()
42 }
43}