use crate::{
tree::{
codec::{Codec, mode::Escaper},
value::IcalValueNode,
},
value::recur::IcalRecur,
};
use alloc::{borrow::Cow, string::String};
impl<'v> Codec<'v> for IcalRecur<'v> {
fn decode(node: &'v IcalValueNode<'_>) -> Self {
let mut joined = String::new();
for i in 0..node.component_count() {
if i > 0 {
joined.push(';');
}
joined.push_str(&node.decode_joined_at(i));
}
IcalRecur(Cow::Owned(joined))
}
fn encode(&self, escaper: Escaper) -> IcalValueNode<'static> {
let mut node = IcalValueNode::parse(self.0.as_bytes()).into_static();
node.escaper = escaper;
node
}
}