vcard-rs 0.2.1

vCard parser, validator, editor and builder library for Rust
Documentation
//! # ORG value codec (RFC 6350 6.6.4)
//!
//! [`VcardCodec`] for the organization value: one or more `;`-separated units.

use crate::{
    tree::{
        codec::{VcardCodec, encode::encode_component, mode::VcardEscaper},
        value::node::VcardValueNode,
    },
    value::org::VcardOrg,
};

impl<'v> VcardCodec<'v> for VcardOrg<'v> {
    fn decode(node: &'v VcardValueNode<'_>) -> Self {
        let units = (0..node.component_count())
            .map(|i| node.decode_scalar_at(i))
            .collect();
        VcardOrg(units)
    }

    fn encode(&self, escaper: VcardEscaper) -> VcardValueNode<'static> {
        VcardValueNode::from_components(
            self.0
                .iter()
                .map(|unit| encode_component(&[unit.as_ref()], escaper))
                .collect(),
            escaper,
        )
    }
}