diff options
Diffstat (limited to 'src/parser/serialize.rs')
| -rw-r--r-- | src/parser/serialize.rs | 36 | 
1 files changed, 0 insertions, 36 deletions
| 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<S>(&self, serializer: S) -> Result<S::Ok, S::Error> 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<S>(&self, serializer: S) -> Result<S::Ok, S::Error> 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() -    } -} | 
