From d9ff9626417ab29cfa7054ad755052d3e5a08f5b Mon Sep 17 00:00:00 2001 From: Philipp A Date: Tue, 20 Nov 2018 00:48:06 +0100 Subject: Serializing document trees! --- src/parser/serialize.rs | 36 ------------------------------------ 1 file changed, 36 deletions(-) delete mode 100644 src/parser/serialize.rs (limited to 'src/parser') diff --git a/src/parser/serialize.rs b/src/parser/serialize.rs deleted file mode 100644 index 260084f..0000000 --- a/src/parser/serialize.rs +++ /dev/null @@ -1,36 +0,0 @@ -use pest::{RuleType, iterators::{Pair, Pairs}}; -use serde::{ - Serialize, - Serializer, - ser::{ - SerializeSeq, - SerializeStruct, - }, -}; - -pub struct PairsWrap<'i, R>(pub Pairs<'i, R>); -pub struct PairWrap <'i, R>(pub Pair <'i, R>); - -impl<'i, R> Serialize for PairsWrap<'i, R> where R: RuleType { - fn serialize(&self, serializer: S) -> Result where S: Serializer { - let mut seq = serializer.serialize_seq(None)?; - for pair in self.0.clone() { - seq.serialize_element(&PairWrap(pair))?; - } - seq.end() - } -} - -impl<'i, R> Serialize for PairWrap<'i, R> where R: RuleType { - fn serialize(&self, serializer: S) -> Result where S: Serializer { - let mut state = serializer.serialize_struct("Pair", 3)?; - state.serialize_field("rule", &format!("{:?}", self.0.as_rule()))?; - let tokens: Vec<_> = self.0.clone().tokens().collect(); - if tokens.len() > 2 { - state.serialize_field("inner", &PairsWrap(self.0.clone().into_inner()))?; - } else { - state.serialize_field("content", self.0.as_str())?; - } - state.end() - } -} -- cgit v1.2.3