From 76a959bda2ac9acf36c73a55e2993c6403578ec9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Wed, 10 Apr 2019 00:49:46 +0200 Subject: Add {format,print}-recur-rule. --- module/vcalendar/recurrence/internal.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'module') diff --git a/module/vcalendar/recurrence/internal.scm b/module/vcalendar/recurrence/internal.scm index 0f03abc0..caa6ccca 100644 --- a/module/vcalendar/recurrence/internal.scm +++ b/module/vcalendar/recurrence/internal.scm @@ -14,6 +14,31 @@ (define (make-recur-rule interval wkst) ((record-constructor '(interval wkst)) interval wkst)) +;; TODO make this part of define-quick-record. +;; Only "hard" part would be to provide type hints for fields for +;; string conversions. +(define (format-recur-rule r) + (define (a f) + ((record-accessor f) r)) + (with-output-to-string + (lambda () + (format #t "#~%") + (for-each + (lambda (field) + (when (a field) + (format #t " ~8@a: ~a~%" + field + ((case field + ((until) (@ (srfi srfi-19 util) time->string)) + (else identity)) + (a field))))) + (record-type-fields ))))) + +(define* (print-recur-rule r #:optional (port (current-output-port))) + (display (format-recur-rule r) port)) + +(export format-recur-rule print-recur-rule) + (define weekdays '(SU MO TU WE TH FR SA)) -- cgit v1.2.3