ical/tree/value/
datetime.rs1use alloc::vec;
6
7use crate::{
8 tree::{
9 codec::{
10 Codec,
11 encode::{encode_component, scalar_node},
12 mode::Escaper,
13 },
14 value::node::IcalValueNode,
15 },
16 value::datetime::{IcalDate, IcalDateTime, IcalDateTimeList, IcalTime},
17};
18
19impl<'v> Codec<'v> for IcalDate<'v> {
20 fn decode(node: &'v IcalValueNode<'_>) -> Self {
21 IcalDate(node.decode())
22 }
23
24 fn encode(&self, escaper: Escaper) -> IcalValueNode<'static> {
25 scalar_node(&self.0, escaper)
26 }
27}
28impl<'v> Codec<'v> for IcalDateTimeList<'v> {
29 fn decode(node: &'v IcalValueNode<'_>) -> Self {
30 IcalDateTimeList(node.decode_list())
31 }
32
33 fn encode(&self, escaper: Escaper) -> IcalValueNode<'static> {
34 IcalValueNode::from_components(vec![encode_component(&self.0, escaper)], escaper)
35 }
36}
37
38impl<'v> Codec<'v> for IcalDateTime<'v> {
39 fn decode(node: &'v IcalValueNode<'_>) -> Self {
40 IcalDateTime(node.decode())
41 }
42
43 fn encode(&self, escaper: Escaper) -> IcalValueNode<'static> {
44 scalar_node(&self.0, escaper)
45 }
46}
47impl<'v> Codec<'v> for IcalTime<'v> {
48 fn decode(node: &'v IcalValueNode<'_>) -> Self {
49 IcalTime(node.decode())
50 }
51
52 fn encode(&self, escaper: Escaper) -> IcalValueNode<'static> {
53 scalar_node(&self.0, escaper)
54 }
55}