aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2023-04-20 19:11:11 +0200
committerTeddy Wing2023-04-20 19:11:11 +0200
commit2dd22dd3e49e29eedc9e5794cdfc0f851a9db6be (patch)
tree3384a86fef91885f78d0a6c1f08905966d3099bc
parent8ac9d4176e8f82285427f698b824fb69df601df8 (diff)
downloadxfdf-2dd22dd3e49e29eedc9e5794cdfc0f851a9db6be.tar.bz2
xfdf.lisp: Ideas for hierarchical fields
Ideas for an implementation change to allow writing XFDFs with nested fields.
-rw-r--r--src/xfdf.lisp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/xfdf.lisp b/src/xfdf.lisp
index d64aa29..5ddd23a 100644
--- a/src/xfdf.lisp
+++ b/src/xfdf.lisp
@@ -25,3 +25,26 @@ value)))
</xfdf>")
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~:*~}<field name=\"~A\"
+~v{~A~:*~} <value>~A</value>
+~v{~A~:*~}</field>
+"
+indent
+name
+indent
+value
+indent))))
+;; * (format t "~v{~A~:*~}<>~A" 5 '("Hello") "Next")