1use alloc::vec;
6
7use crate::{
8 tree::{
9 codec::{
10 Codec,
11 encode::{encode_component, scalar_node},
12 mode::Escaper,
13 },
14 value::node::IcalValueNode,
15 },
16 value::text::{IcalText, IcalTextList},
17};
18
19impl<'v> Codec<'v> for IcalText<'v> {
20 fn decode(node: &'v IcalValueNode<'_>) -> Self {
21 IcalText(node.decode_joined_at(0))
26 }
27
28 fn encode(&self, escaper: Escaper) -> IcalValueNode<'static> {
29 scalar_node(&self.0, escaper)
30 }
31}
32
33impl<'v> Codec<'v> for IcalTextList<'v> {
34 fn decode(node: &'v IcalValueNode<'_>) -> Self {
35 IcalTextList(node.decode_at(0))
36 }
37
38 fn encode(&self, escaper: Escaper) -> IcalValueNode<'static> {
39 IcalValueNode::from_components(vec![encode_component(&self.0, escaper)], escaper)
40 }
41}