ical/tree/param/
partstat.rs1use alloc::{borrow::Cow, string::ToString, vec};
6
7use crate::{
8 param::IcalParamKind,
9 tree::{
10 codec::{escape::escape_param, mode::Escaper, unescape::unescape_param},
11 leaf::IcalLeaf,
12 param::{lens::IcalParamLens, node::IcalParamNode},
13 },
14};
15
16#[allow(non_camel_case_types)]
18pub struct PARTSTAT;
19
20impl IcalParamLens for PARTSTAT {
21 const KIND: IcalParamKind = IcalParamKind::PartStat;
22
23 type Target<'v> = Cow<'v, str>;
24
25 fn decode<'v>(param: &'v IcalParamNode<'_>) -> Cow<'v, str> {
26 param
27 .values
28 .first()
29 .map(|value| unescape_param(value.get(), param.escaper))
30 .unwrap_or_default()
31 }
32
33 fn encode(decoded: &Cow<'_, str>, escaper: Escaper) -> IcalParamNode<'static> {
34 IcalParamNode {
35 name: IcalLeaf::from(Self::KIND.to_string()),
36 values: vec![IcalLeaf::from(escape_param(decoded, escaper).into_owned())],
37 escaper,
38 }
39 }
40}