optimism ======== Command line option handling for R7RS Scheme. Description ----------- This Scheme library provides a way to collect command line options into an association list according to a simple S-expressive grammar. It's meant to be easy to use and pure-R7RS. Usage ----- One procedure is provided, `parse-command-line`, which takes as arguments an options grammar and an optional list of command line option strings and returns an association list. If no list of options is given, the program's command line arguments are used. (import (foldling optimism)) (parse-command-line '("-a" "-b" "one" "-c" "two" "three" "-d" "four" "5" "six") `((-a) (-b . foo) (-c bar baz) (-d ,string->symbol ,string->number))) ; => ((-a) ; (-b . "one") ; (-c "two" "three") ; (-d four 5) ; (-- "six")) As a special case, an item in the grammar whose first element is a list will be split into separate entries, allowing an abbreviated syntax for multiple option specifications of the same form: (parse-command-line '(((--foo --bar --baz) . qux))) ; => (parse-command-line ; '((--foo . qux) ; (--bar . qux) ; (--baz . qux))) Parsers for `getopt(3)` and `getopt_long(3)`-style command lines are provided by the `getopt` and `getopt-long` sublibraries, respectively. (import (foldling optimism getopt)) (parse-command-line ; => ((-a) '("-abcone" "-d" "two") ; (-b) '((-a) ; (-c . "one") (-b) ; (-d . "two") (-c . one) ; (--)) (-d . two))) (import (foldling optimism getopt-long)) (parse-command-line ; => ((-a . "one") '("-aone" "--foo" "--bar=two") ; (--foo) '((-a . one) ; (--bar . "two") (--foo) ; (--)) (--bar . two))) Refer to `optimism.scm` for more API details. Installation ------------ To install for CHICKEN Scheme, run `chicken-install` from the project's root directory. $ git clone http://git.foldling.org/optimism.git $ cd optimism $ chicken-install -test Other Schemes should install the following files: src/foldling/optimism.scm src/foldling/optimism.sld src/foldling/optimism/getopt.scm src/foldling/optimism/getopt.sld src/foldling/optimism/getopt-long.scm src/foldling/optimism/getopt-long.sld Author ------ Evan Hanson License ------- This software is written by Evan Hanson and placed in the Public Domain. All warranties are disclaimed.