1use alloc::vec;
6
7use crate::{
8 tree::{
9 codec::{
10 VcardCodec,
11 encode::{encode_component, scalar_node},
12 mode::VcardEscaper,
13 },
14 value::node::VcardValueNode,
15 },
16 value::text::{VcardText, VcardTextList},
17};
18
19impl<'v> VcardCodec<'v> for VcardText<'v> {
20 fn decode(node: &'v VcardValueNode<'_>) -> Self {
21 VcardText(node.decode_scalar_at(0))
22 }
23
24 fn encode(&self, escaper: VcardEscaper) -> VcardValueNode<'static> {
25 scalar_node(&self.0, escaper)
26 }
27}
28
29impl<'v> VcardCodec<'v> for VcardTextList<'v> {
30 fn decode(node: &'v VcardValueNode<'_>) -> Self {
31 VcardTextList(node.decode_at(0))
32 }
33
34 fn encode(&self, escaper: VcardEscaper) -> VcardValueNode<'static> {
35 VcardValueNode::from_components(vec![encode_component(&self.0, escaper)], escaper)
36 }
37}