From c318ae56561019484190de8b31dabc1c2f89bb74 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Fri, 21 Apr 2023 00:58:24 +0200 Subject: xfdf.lisp: Try to recurse over nested fields (WIP) This isn't working yet. I'm working out how to set up the recursion to print fields hierarchically. --- src/xfdf.lisp | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/xfdf.lisp b/src/xfdf.lisp index 5ddd23a..db36c80 100644 --- a/src/xfdf.lisp +++ b/src/xfdf.lisp @@ -9,17 +9,21 @@ list." ") +; (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))) + (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))) + (field-xfdf name value)) (format output-stream " ") @@ -34,17 +38,31 @@ value))) (let ((indent (+ 2 nesting-level))) ;; TODO: Add checkbox default values. (if (listp value) - (field-xfdf* name value (1+ nesting-level)) + ;; TODO: We need to do something with value + (dolist (field value) + (let ((subname (if (listp field) + (first field) + field)) + (subfield (if (listp field) + (rest field) + field))) + (field-xfdf* subname subfield (1+ nesting-level)))) ;; TODO: Put checkbox stuff here. - (format nil "~ + (let ((value (cond ((eq value t) "Yes") + ((eq value nil) "Off") + (t value)))) + (format nil "~ ~v{~A~:*~}~A ~v{~A~:*~} " indent +'(" ") name indent +'(" ") value -indent)))) +indent +'(" ")))))) ;; * (format t "~v{~A~:*~}<>~A" 5 '("Hello") "Next") -- cgit v1.2.3