diff --git a/dev.metalisp.survey.asd b/dev.metalisp.survey.asd index 129bc0b..f341f67 100644 --- a/dev.metalisp.survey.asd +++ b/dev.metalisp.survey.asd @@ -2,7 +2,7 @@ (defsystem "dev.metalisp.survey" :description "Create questionnaires and analyze the results." - :version "0.5.6" + :version "0.5.7" :author "Marcus Kammer " :source-control (:git "git@git.sr.ht:~marcuskammer/dev.metalisp.survey") :licence "MIT" diff --git a/src/questionnaire.lisp b/src/questionnaire.lisp index 043a057..e9cdef5 100644 --- a/src/questionnaire.lisp +++ b/src/questionnaire.lisp @@ -23,17 +23,24 @@ (lang "" :type string) (name "" :type string)) +(defun form-path (q) + (uiop:merge-pathnames* (format nil "~a/~a.lisp" + (questionnaire-lang q) + (questionnaire-name q)) + (ml-survey/fileops:ensure-questionnaires-dir))) + (defun load-form (q) (declare (type questionnaire q)) "Load a Lisp file containing form definitions." - (let* ((form-path (uiop:merge-pathnames* (format nil "~a/~a.lisp" - (questionnaire-lang q) - (questionnaire-name q)) - (ml-survey/fileops:ensure-questionnaires-dir)))) - (unless (probe-file form-path) - (error "Form file ~A does not exist." form-path)) - (load form-path)) - nil) + (let ((form-path (form-path q))) + (if (probe-file form-path) + (handler-case + (load form-path) + (file-error (e) + (warn "File error occurred: ~A" e)) + (reader-error (e) + (warn "Syntax error occurred: ~A" e))) + (error "Form file ~A does not exist." form-path)))) (defmacro with-form (&body body) "Create a standardized HTML form wrapped in a
tag with a pre-defined