blob: 8fadde7506fca448cc8276ac2236bae90a441549 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
(define-module (vcomponent formats xcal)
:use-module (sxml namespaced)
:use-module (sxml namespaced util)
:use-module ((vcomponent formats xcal output)
:select (vcomponent->sxcal ns-wrap))
:use-module ((vcomponent formats xcal parse)
:select (sxcal->vcomponent))
:use-module ((hnh util) :select (->))
:export (serialize deserialize))
(define-public xcal (string->symbol "urn:ietf:params:xml:ns:icalendar-2.0"))
(define* (serialize component port key: (namespaces `((,xcal . xcal))))
(-> (vcomponent->sxcal component)
ns-wrap
(namespaced-sxml->xml port: port
namespaces: namespaces)))
(define (serialize/object component)
(call-with-output-string (lambda (p) (serialize component p))))
(define* (deserialize port)
(-> port
xml->namespaced-sxml
root-element ; Strip potential *TOP*
cadr ; Remove containing icalendar
sxcal->vcomponent))
|