diff options
author | Paul A. Patience <paul@apatience.com> | 2022-02-12 15:38:04 +0000 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-02-12 14:08:11 -0800 |
commit | e56d87f41892845ff380e00aa9a42ce55e70eede (patch) | |
tree | f7c6443cf08792d8207d69e464854a658fa51d65 | |
parent | 8cc78a0c7b82ac3d4f07a00bb10dad3d8645b9d4 (diff) | |
download | txr-e56d87f41892845ff380e00aa9a42ce55e70eede.tar.gz txr-e56d87f41892845ff380e00aa9a42ce55e70eede.tar.bz2 txr-e56d87f41892845ff380e00aa9a42ce55e70eede.zip |
getopts: forbid :bool in list/cumul types.
* stdlib/getopts.tl (list-type-p): Return nil if subtype is :bool.
(cumul-type-p): Same.
* txr.1: Documented, reworded some sentences, fixed some typos.
-rw-r--r-- | stdlib/getopts.tl | 2 | ||||
-rw-r--r-- | txr.1 | 22 |
2 files changed, 17 insertions, 7 deletions
diff --git a/stdlib/getopts.tl b/stdlib/getopts.tl index fcfa8ea8..aa6ba4ab 100644 --- a/stdlib/getopts.tl +++ b/stdlib/getopts.tl @@ -73,12 +73,14 @@ (defmeth opt-desc list-type-p (me type) (tree-case type ((indicator btype) (and (eq indicator 'list) + (neq btype :bool) me.(basic-type-p btype))) (x nil))) (defmeth opt-desc cumul-type-p (me type) (tree-case type ((indicator btype) (and (eq indicator 'usr:cumul) + (neq btype :bool) (or me.(basic-type-p btype) me.(list-type-p btype)))) (x nil))) @@ -68314,7 +68314,7 @@ macro: (c nil upcase-str "Custom treatment: ARG is converted to uppercase.") (b bool :bool - "A flag you can flip true.")) + "A flag you can flip true.")) (defvarl prog-name *load-path*) @@ -68440,7 +68440,12 @@ and converted accordingly. The option's argument is then a list object whose elements are the converted pieces. For instance .code "(list :dec)" will convert a list of comma-separated decimal integer tokens into -a list of integer objects. The +a list of integer objects. +The +.meta type +argument must be a basic type other than +.codn :bool . +The .code list option type does not nest. .meIP (cumul << type ) @@ -68450,14 +68455,17 @@ symbol, it indicates that if the option is specified multiple times, the values coming from the multiple occurrences are accumulated into a list. The .meta type -argument may be a +argument must be a .code list -type, exemplified by +type or a basic type other than +.codn :bool , +for example .code "(cumul (list :dec))" -or a basic type, such as +and .codn "(cumul :str)" . -However, this type specifier does not nest. Combinations such as -.code "(cumul (cumul ...)" +This type specifier does not nest: +combinations such as +.code "(cumul (cumul ...))" and .code "(list (cumul ...))" are invalid. |