Function: icalendar-print-param-node
icalendar-print-param-node is a byte-compiled function defined in
icalendar-parser.el.gz.
Signature
(icalendar-print-param-node NODE)
Documentation
Serialize a parameter syntax node NODE to a string.
NODE should be a syntax node whose type is an iCalendar parameter type.
Source Code
;; Defined in /usr/src/emacs/lisp/calendar/icalendar-parser.el.gz
(defun ical:print-param-node (node)
"Serialize a parameter syntax node NODE to a string.
NODE should be a syntax node whose type is an iCalendar
parameter type."
(let* ((param-type (ical:ast-node-type node))
(param-name (car (rassq param-type ical:param-types)))
(name-str (or param-name
;; set by parse-params for unrecognized params:
(ical:ast-node-meta-get :original-name node))))
(unless (and name-str (stringp name-str) (not (equal name-str "")))
(ical:signal-print-error "No printable parameter name" :node node))
(let* ((list-sep (get param-type 'ical:list-sep))
(val/s (ical:ast-node-value node))
(vals (if (and list-sep (listp val/s))
val/s
(list val/s)))
;; any ical:print-error here propagates:
(printed (mapcar #'ical:default-value-printer vals))
;; add quotes to each value as needed, even if :quoted
;; does not require it:
(must-quote (get param-type 'ical:is-quoted))
(quoted (mapcar
(lambda (v) (ical:maybe-quote-param-value v must-quote))
printed))
(val-str (or (ical:ast-node-meta-get :original-value node)
(string-join quoted list-sep)
quoted)))
(unless (and (stringp val-str) (not (equal val-str "")))
(ical:signal-print-error "Unable to print parameter value" :node node))
(format ";%s=%s" name-str val-str))))