aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTeddy Wing2023-04-21 00:58:24 +0200
committerTeddy Wing2023-04-21 00:58:24 +0200
commitc318ae56561019484190de8b31dabc1c2f89bb74 (patch)
treee2fa6bb1b9fd3e69d420e1b8cde8fe4989d19f04 /src
parent2dd22dd3e49e29eedc9e5794cdfc0f851a9db6be (diff)
downloadxfdf-c318ae56561019484190de8b31dabc1c2f89bb74.tar.bz2
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.
Diffstat (limited to 'src')
-rw-r--r--src/xfdf.lisp42
1 files changed, 30 insertions, 12 deletions
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."
<fields>
")
+; (loop for (name . value) in fields
+; do
+; (let ((value (cond ((eq value t) "Yes")
+; ((eq value nil) "Off")
+; (t value))))
+; (format output-stream " <field name=\"~A\">
+; <value>~A</value>
+; </field>
+; "
+; 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 " <field name=\"~A\">
- <value>~A</value>
- </field>
-"
-name
-value)))
+ (field-xfdf name value))
(format output-stream " </fields>
</xfdf>")
@@ -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~:*~}<field name=\"~A\"
~v{~A~:*~} <value>~A</value>
~v{~A~:*~}</field>
"
indent
+'(" ")
name
indent
+'(" ")
value
-indent))))
+indent
+'(" "))))))
;; * (format t "~v{~A~:*~}<>~A" 5 '("Hello") "Next")