Update of /project/cl-cli-parser/cvsroot/cl-cli-parser In directory common-lisp.net:/tmp/cvs-serv10121
Modified Files: unit-test.lisp cli-parser.lisp ChangeLog Log Message: see changelog.
Date: Sun Mar 20 00:08:37 2005 Author: dbueno
Index: cl-cli-parser/unit-test.lisp diff -u cl-cli-parser/unit-test.lisp:1.2 cl-cli-parser/unit-test.lisp:1.3 --- cl-cli-parser/unit-test.lisp:1.2 Sat Mar 19 23:17:32 2005 +++ cl-cli-parser/unit-test.lisp Sun Mar 20 00:08:37 2005 @@ -34,5 +34,5 @@
(defun report-result (result form) "Report the results of a single test case. Called by `check'." - (format t "~:[FAIL~;pass~] ... ~a: ~a~%" result *test-name* form) + (format t "~:[FAIL~;pass~] ... ~a: ~w~%" result *test-name* form) result)
Index: cl-cli-parser/cli-parser.lisp diff -u cl-cli-parser/cli-parser.lisp:1.2 cl-cli-parser/cli-parser.lisp:1.3 --- cl-cli-parser/cli-parser.lisp:1.2 Sat Mar 19 21:07:00 2005 +++ cl-cli-parser/cli-parser.lisp Sun Mar 20 00:08:37 2005 @@ -1,4 +1,4 @@ -;;;; $Id: cli-parser.lisp,v 1.2 2005/03/19 20:07:00 dbueno Exp $ +;;;; $Id: cli-parser.lisp,v 1.3 2005/03/19 23:08:37 dbueno Exp $ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; Denis Bueno ;;;; @@ -62,17 +62,17 @@ #:make-cli-option) (:documentation "Used for command-line-interface parsing, in the same tradition -as getopt, but, a bit more convenient. The three exported main -functions are: +as getopt, but, a bit more convenient. The three main functions +are:
-CLI-PARSE -CLI-PARSE-HASH -CLI-PARSE-ASSOC +* CLI-PARSE +* CLI-PARSE-HASH +* CLI-PARSE-ASSOC
-cli-parse actually just calls cli-parse-hash, which will parse a +CLI-PARSE actually just calls CLI-PARSE-HASH, which will parse a list of command-line arguments against a list of cli-option -objects. cli-parse-assoc, instead of returning a hash table of -results like cli-parse-hash does, returns an assoc list of +objects. CLI-PARSE-ASSOC, instead of returning a hash table of +results like CLI-PARSE-HASH does, returns an assoc list of results.
The idea is that you create a bunch of cli-option instances (via @@ -87,34 +87,21 @@
(in-package :cli-parser)
-(defstruct cli-option - (abbr nil :type (or string null)) - (full "" :type string) - (requires-arguments nil :type boolean) - (description "" :type string) - (example "" :type string)) - -(setf (documentation 'cli-option-abbr 'function) - "Abbreviation for this command-line option." - (documentation 'cli-option-full 'function) - "The full name of this command-line option." - (documentation 'cli-option-requires-arguments 'function) - "Whether this command-line option requires arguments." - (documentation 'cli-option-description 'function) - "A sentence of description of this command-line option." - (documentation 'cli-option-example 'function) - "An example of the usage of this command-line option." - (documentation 'cli-option-p 'function) - "Test whether the argument is a cli-option.") - -;; (defclass cli-option () -;; ((abbreviation :initarg :abbr :accessor cli-option-abbr) -;; (longname :initarg :long :accessor cli-option-long) -;; (argumentsp :initform nil -;; :initarg :argumentsp :accessor cli-option-argumentsp) -;; (description :initform "Default description." -;; :initarg :description :accesssor cli-option-description) -;; (example :initarg :example :accessor cli-option-example))) +;;; TODO: decide what to do if see an option like -cookycrisp: continuable +;;; error/condition restart, ignore? + +(defclass cli-option () + ((abbreviation :initarg :abbr :accessor cli-option-abbr) + (longname :initarg :full :accessor cli-option-full) + (argumentsp :initform nil + :initarg :requires-arguments + :accessor cli-option-requires-arguments) + (description :initform "Default description." + :initarg :description :accessor cli-option-description) + (example :initarg :example :accessor cli-option-example))) + +(defun make-cli-option (&rest initargs) + (apply #'make-instance 'cli-option initargs))
(defvar *single-dash* #- "Short option prefix.") @@ -144,7 +131,8 @@ and you give "--opt1=value1" and "-n" to cli-parse-assoc, it returns and assoc-list of the form (("opt1" ("value1" "value2")) ("n" nil))." - (to-full-opt-names (cli-parse-assoc-aux (coalesce-options args) nil) cli-opts)) + (to-full-opt-names (cli-parse-assoc-aux (coalesce-options args) nil) + cli-opts)) (defun cli-parse-assoc-aux (args results) "Helper for cli-parse." (cond ((endp args) (reverse results))
Index: cl-cli-parser/ChangeLog diff -u cl-cli-parser/ChangeLog:1.1 cl-cli-parser/ChangeLog:1.2 --- cl-cli-parser/ChangeLog:1.1 Sat Mar 19 21:07:15 2005 +++ cl-cli-parser/ChangeLog Sun Mar 20 00:08:37 2005 @@ -1,5 +1,11 @@ 2005-03-19 Denis Bueno Denis.Bueno@gtri.gatech.edu
+ * cli-parser.lisp (Global): Using CLOS classes instead of structs + now. + + * unit-test.lisp: Unit testing framework (Seibel's). + (report-result): Write forms literally, not aesthetically. + * cli-parser-test.lisp: Unit test added.
* cli-parser.lisp: Stubbed out the class to replace the CLI-OPTION
cl-cli-parser-cvs@common-lisp.net