diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/xfdf.lisp | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/src/xfdf.lisp b/src/xfdf.lisp index a3ada7b..59a032a 100644 --- a/src/xfdf.lisp +++ b/src/xfdf.lisp @@ -44,23 +44,27 @@ amount of indentation to use relative to the +field-base-indentation+." (if (consp value) ;; TODO: We need to do something with value ;; TODO: How to concat results from dolist? - (let ((inner-fields - (loop for field in value - collect - (let ((subname (if (listp field) - (first field) - field)) - (subfield (if (listp field) - (rest field) - field))) - (field-xfdf* subname subfield (1+ nesting-level)))))) - (build-xfdf-outer-field name inner-fields indent)) + (build-xfdf-nested-field name value nesting-level indent) ;; TODO: Put checkbox stuff here. (let ((value (pdf-checkbox-value value))) - (build-xfdf-field name value indent))))) + (xfdf-field-string name value indent))))) ;; * (format t "~v{~A~:*~}<>~A" 5 '("Hello") "Next") +(defun build-xfdf-nested-field (name value nesting-level indent) + "Build the XFDF XML for a field containing other fields." + (let ((inner-fields + (loop for field in value + collect + (let ((subname (if (listp field) + (first field) + field)) + (subfield (if (listp field) + (rest field) + field))) + (field-xfdf* subname subfield (1+ nesting-level)))))) + (xfdf-outer-field-string name inner-fields indent))) + (defun pdf-checkbox-value (value) "If `value` is T or NIL, convert it to the default PDF checkbox values 'Yes' and 'Off' respectively. @@ -71,8 +75,8 @@ If `value` is anything else, return its identity." ((eq value nil) "Off") (t value))) -(defun build-xfdf-outer-field (name inner-fields-string indent) - "Build the XFDF XML for a field containing other fields." +(defun xfdf-outer-field-string (name inner-fields-string indent) + "Build the XFDF XML string for a field containing other fields." (format nil "~ ~v{~A~:*~}<field name=\"~A\"> ~{~A~}~v{~A~:*~}</field> @@ -84,7 +88,7 @@ inner-fields-string indent '(" "))) -(defun build-xfdf-field (name value indent) +(defun xfdf-field-string (name value indent) "Build the XFDF XML for a single field." (format nil "~ ~v{~A~:*~}<field name=\"~A\"> |