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