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