|
Smalltalk/X WebserverDocumentation of class 'GetOpt': |
|
|
Class: GetOptInheritance:Object | +--Collection | +--Set | +--Dictionary | +--GetOpt
Description:
GetOpt -- command line parser
Smalltalk version of Unix getopt(3)-like command line parser.
Crash course:
1) Create a GetOpt with 'GetOpt new'.
2) Tell it what options to expect with 'getOpt at: optChar put: optBlock'
where optChar is a character (the option, duh) and optBlock is a
unary block (for options without arguments) or a binary block for
options with arguments. (The first block parameter is always the
option letter that was matched; the second, if present, is the
argument to the option.)
3) Tell it what to do with option $? if you want to intercept unrecognised
options.
4) Send it 'default: unaryBlock' to tell it what to do with non-option
arguments.
5) Send it 'parse: aCollection' to parse the arguments in aCollection.
Note that '-x foo' and '-xfoo' are handled correctly for an option
'x' that expects an argument (in both cases the argument is 'foo').
For anyone who didn't understand the crash course, the following:
| files searchPath outputPath verbose |
files := OrderedCollection new.
searchPath := OrderedCollection new.
outputPath := nil.
verbose := false.
GetOpt new
at: $I put: [ :opt :arg | searchPath add: arg ];
at: $o put: [ :opt :arg | outputPath := arg ];
at: $v put: [ :opt | verbose := true ];
at: $? put: [ :opt | self error: 'illegal option: -' , opt asString ];
default: [ :arg | files add: arg ];
parse: Smalltalk arguments startingAt: 1.
will parse a compiler command line for include directories ('-I dir'
option, argument appended to 'searchPath'), an output filename
('-o filename' option, argument left in 'outputPath'), a verbosity
flag ('-v' option, setting 'verbose' to true), and zero or more input
filenames (anything else, appended to 'files').
If you still don't understand then you shouldn't be here.
Related information:
StandaloneStartup
Smalltalk
ReadEvalPrintLoop
Class protocol:instance creationInstance protocol:accessing error reporting initialization parsing parsing - private
|
|
|
ST/X 7.1.0.0; WebServer 1.663 at exept.de:8081; Wed, 17 Dec 2025 12:01:29 GMT
|