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