From: Mark Wooding Date: Sat, 19 Apr 2008 21:33:08 +0000 (+0100) Subject: optparse: Prettify the error reporting. X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/lisp/commitdiff_plain/544a637d6916ca9ec6ae63cf5ad90656ebbcbdfa?ds=sidebyside optparse: Prettify the error reporting. Rather than have enormous strings in the source, use #.(concatenate ...) to build them out of smaller bits. --- diff --git a/optparse.lisp b/optparse.lisp index 6e06fc0..b490b37 100644 --- a/optparse.lisp +++ b/optparse.lisp @@ -74,7 +74,13 @@ (defstruct (option (:predicate optionp) (lambda (o s k) (declare (ignore k)) (format s - "#" + #.(concatenate 'string + "#") (opt-short-name o) (opt-long-name o) (opt-arg-name o) @@ -289,8 +295,10 @@ (defun option-parse-next (op) (option-parse-error "Unknown option `~A'" optname)) ((cdr matches) (option-parse-error - "~ -Ambiguous long option `~A' -- could be any of:~{~% --~A~}" + #.(concatenate 'string + "Ambiguous long option `~A' -- " + "could be any of:" + "~{~%~8T--~A~}") optname (mapcar #'opt-long-name matches)))) (process-option (car matches) @@ -565,7 +573,9 @@ (defopthandler int (var arg) (&key radix min max) (when (or (and min (< v min)) (and max (> v max))) (option-parse-error - "Integer ~A out of range (must have ~@[~D <= ~]x~@[ <= ~D~])" + #.(concatenate 'string + "Integer ~A out of range " + "(must have ~@[~D <= ~]x~@[ <= ~D~])") arg min max)) (setf var v))) @@ -596,14 +606,18 @@ (defopthandler keyword (var arg) (&optional (valid t)) (push k matches))))) (cond ((null matches) - (option-parse-error "Argument `~A' invalid: must be one of:~ - ~{~%~8T~(~A~)~}" + (option-parse-error #.(concatenate 'string + "Argument `~A' invalid: " + "must be one of:" + "~{~%~8T~(~A~)~}") arg valid)) ((null (cdr matches)) (setf var (car matches))) (t - (option-parse-error "Argument `~A' ambiguous: may be any of:~ - ~{~%~8T~(~A~)~}" + (option-parse-error #.(concatenate 'string + "Argument `~A' ambiguous: " + "may be any of:" + "~{~%~8T~(~A~)~}") arg matches))))))) (defopthandler list (var arg) (&optional handler &rest handler-args)