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 6e06fc0..b490b37 100644 (file)
                    (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)
                      (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 @@ Ambiguous long option `~A' -- could be any of:~{~%  --~A~}"
     (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 @@ Ambiguous long option `~A' -- could be any of:~{~%  --~A~}"
                  (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)