Skip to main content

vcard/tree/value/
org.rs

1//! # ORG value codec (RFC 6350 6.6.4)
2//!
3//! [`VcardCodec`] for the organization value: one or more `;`-separated units.
4
5use crate::{
6    tree::{
7        codec::{VcardCodec, encode::encode_component, mode::VcardEscaper},
8        value::node::VcardValueNode,
9    },
10    value::org::VcardOrg,
11};
12
13impl<'v> VcardCodec<'v> for VcardOrg<'v> {
14    fn decode(node: &'v VcardValueNode<'_>) -> Self {
15        let units = (0..node.component_count())
16            .map(|i| node.decode_scalar_at(i))
17            .collect();
18        VcardOrg(units)
19    }
20
21    fn encode(&self, escaper: VcardEscaper) -> VcardValueNode<'static> {
22        VcardValueNode::from_components(
23            self.0
24                .iter()
25                .map(|unit| encode_component(&[unit.as_ref()], escaper))
26                .collect(),
27            escaper,
28        )
29    }
30}