From e96963ab77c6c3d4c12ea00dd4e6906121fb228f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 16 Oct 2023 15:21:32 +0200 Subject: Fixen in vcomponent formats. Previously almost everything was broken. This takes it back to a somewhat working state. --- module/vcomponent/formats/sxcal.scm | 6 +++--- module/vcomponent/formats/xcal.scm | 3 ++- module/vcomponent/formats/xcal/output.scm | 9 +++++---- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/module/vcomponent/formats/sxcal.scm b/module/vcomponent/formats/sxcal.scm index c02dbada..35e0ee1c 100644 --- a/module/vcomponent/formats/sxcal.scm +++ b/module/vcomponent/formats/sxcal.scm @@ -1,15 +1,15 @@ (define-module (vcomponent formats sxcal) :use-module ((vcomponent formats xcal parse) :select (sxcal->vcomponent)) - :export (serialize deserialize) - ) + :use-module ((vcomponent formats xcal output) + :select (vcomponent->sxcal)) + :export (serialize deserialize)) (define (serialize component port) (write (serialize/object component) port)) (define (serialize/object component) - ;; TODO where is this defined? (vcomponent->sxcal component)) (define (deserialize port) diff --git a/module/vcomponent/formats/xcal.scm b/module/vcomponent/formats/xcal.scm index 29a1d92f..8fadde75 100644 --- a/module/vcomponent/formats/xcal.scm +++ b/module/vcomponent/formats/xcal.scm @@ -8,8 +8,9 @@ :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 '())) +(define* (serialize component port key: (namespaces `((,xcal . xcal)))) (-> (vcomponent->sxcal component) ns-wrap (namespaced-sxml->xml port: port diff --git a/module/vcomponent/formats/xcal/output.scm b/module/vcomponent/formats/xcal/output.scm index 2378d87e..6d5e0656 100644 --- a/module/vcomponent/formats/xcal/output.scm +++ b/module/vcomponent/formats/xcal/output.scm @@ -76,10 +76,11 @@ (warning (G_ "Unknown key ~a") k) (get-writer 'TEXT)])) - (writer ((@@ (vcomponent base) get-vline-parameters) vline) - (value vline))) + (writer (vline-parameters vline) + (vline-value vline))) -(define (property->value-tag tag . values) +(define (property->value-tag pair) + (define-values (tag value) (car+cdr pair)) (if (or (eq? tag 'VALUE) (internal-field? tag)) #f @@ -87,7 +88,7 @@ ,@(map (lambda (v) ;; TODO parameter types!!!! (rfc6321 3.5.) `(,(xml xcal 'text) ,(->string v))) - values)))) + value)))) ;; ((key value ...) ...) -> `(parameters , ... ) (define (parameters-tag parameters) -- cgit v1.2.3