chiark / gitweb /
optparse: Prettify the error reporting.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 19 Apr 2008 21:33:08 +0000 (22:33 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 19 Apr 2008 21:33:08 +0000 (22:33 +0100)
Rather than have enormous strings in the source, use #.(concatenate ...)
to build them out of smaller bits.

optparse.lisp

index 6e06fc0b11d9d49cfa78730d853e5a3c3bfdfd62..b490b37b51fb7f966cc8f1a538a3802b985c3841 100644 (file)
@@ -74,7 +74,13 @@ (defstruct (option (:predicate optionp)
                    (lambda (o s k)
                      (declare (ignore k))
                      (format s
-          "#<option~@[ -~C,~]~@[ --~A~]~:[~2*~;~:[=~A~;[=~A]~]~]~@[ ~S~]>"
+                             #.(concatenate 'string
+                                            "#<option"
+                                            "~@[ -~C,~]"
+                                            "~@[ --~A~]"
+                                            "~:[~2*~;~:[=~A~;[=~A]~]~]"
+                                            "~@[ ~S~]"
+                                            ">")
                              (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)