(in-package :xfdf)
(defun write-xfdf (output-stream fields)
"Write an XFDF document to `output-stream` using cons cells in the `fields`
list."
(format output-stream "~
")
(loop for (name . value) in fields
do
(let ((value (cond ((eq value t) "Yes")
((eq value nil) "Off")
(t value))))
(format output-stream "
~A
"
name
value)))
(format output-stream "
")
output-stream)
(defun field-xfdf (name value)
(field-xfdf* name value 0))
(defun field-xfdf* (name value nesting-level)
""
(let ((indent (+ 2 nesting-level)))
;; TODO: Add checkbox default values.
(if (listp value)
(field-xfdf* name value (1+ nesting-level))
;; TODO: Put checkbox stuff here.
(format nil "~
~v{~A~:*~}~A
~v{~A~:*~}
"
indent
name
indent
value
indent))))
;; * (format t "~v{~A~:*~}<>~A" 5 '("Hello") "Next")