aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-06-16 21:22:02 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2020-06-16 21:22:02 +0200
commitf8119165b580810da8945a84b4d0193e0f6e74b9 (patch)
tree304275fde17e5f6082f5b9459ab36d96662c2659
parentStore unchanged datetimes in X-HNH-ORIGINAL property. (diff)
downloadcalp-f8119165b580810da8945a84b4d0193e0f6e74b9.tar.gz
calp-f8119165b580810da8945a84b4d0193e0f6e74b9.tar.xz
Multi-valued TEXT fields now always lists.
-rw-r--r--module/vcomponent/parse/component.scm12
-rw-r--r--module/vcomponent/parse/types.scm5
2 files changed, 7 insertions, 10 deletions
diff --git a/module/vcomponent/parse/component.scm b/module/vcomponent/parse/component.scm
index 690c0698..69b833dd 100644
--- a/module/vcomponent/parse/component.scm
+++ b/module/vcomponent/parse/component.scm
@@ -92,7 +92,7 @@
(string-split value #\,)))))
(define* (enum-parser enum optional: allow-other)
- (let ((parser (get-parser 'TEXT)))
+ (let ((parser (compose car (get-parser 'TEXT))))
(lambda (params value)
(let ((vv (parser params value)))
(when (list? vv)
@@ -130,9 +130,9 @@
CONTACT RELATED-TO UID))
(lambda (params value)
(let ((v ((get-parser 'TEXT) params value)))
- (when (list? v)
+ (unless (= 1 (length v))
(warning "List in non-list field: ~s" v))
- v))]
+ (car v)))]
;; TEXT, but allow a list
[(memv key '(CATEGORIES RESOURCES))
@@ -140,7 +140,7 @@
[(memv key '(VERSION))
(lambda (params value)
- (let ((v ((get-parser 'TEXT) params value)))
+ (let ((v (car ((get-parser 'TEXT) params value))))
(unless (and (string? v) (string=? "2.0" v))
(warning "File of unsuported version. Proceed with caution"))))]
@@ -197,11 +197,11 @@
(get-parser 'CAL-ADDRESS)]
[(x-property? key)
- (get-parser 'TEXT)]
+ (compose car (get-parser 'TEXT))]
[else
(warning "Unknown key ~a" key)
- (get-parser 'TEXT)])))
+ (compose car (get-parser 'TEXT))])))
;; If we produced a list create multiple VLINES from it.
;; NOTE that the created vlines share parameter tables.
diff --git a/module/vcomponent/parse/types.scm b/module/vcomponent/parse/types.scm
index 3cd7dd29..7e4df6b7 100644
--- a/module/vcomponent/parse/types.scm
+++ b/module/vcomponent/parse/types.scm
@@ -79,10 +79,7 @@
(str '())
(done '()))
(if (null? rem)
- (let ((final (reverse-list->string str)))
- (if (null? done)
- final
- (cons final done)))
+ (cons (reverse-list->string str) done)
(case (car rem)
[(#\\)
(case (cadr rem)