mirror of
https://github.com/flynx/argv.js.git
synced 2025-10-28 18:30:07 +00:00
small rewrite...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
5c9a7be4a1
commit
5aaae8493d
21
argv.js
21
argv.js
@ -699,33 +699,30 @@ object.Constructor('Parser', {
|
||||
// NOTE: opts and commands do not follow the same path here
|
||||
// because options if unidentified need to be split into
|
||||
// single letter options and commands to not...
|
||||
var type = opt_pattern.test(arg) ?
|
||||
'opt'
|
||||
var [type, dfl] = opt_pattern.test(arg) ?
|
||||
['opt', parsed.optionPrefix +'*']
|
||||
: parsed.isCommand(arg) ?
|
||||
'cmd'
|
||||
: 'unhandled'
|
||||
['cmd', parsed.commandPrefix +'*']
|
||||
: ['unhandled']
|
||||
// options / commands...
|
||||
if(type != 'unhandled'){
|
||||
// quote '-*' / '@*'...
|
||||
arg = arg.replace(/^(.)\*$/, '$1\\*')
|
||||
// get handler...
|
||||
var handler = parsed.handler(arg)[1]
|
||||
// handle merged options
|
||||
// NOTE: if successful returns array...
|
||||
// handle merged options...
|
||||
// NOTE: we replace arg here...
|
||||
|| (type == 'opt'
|
||||
&& parsed.splitOptions
|
||||
&& splitArgs(arg, rest))
|
||||
// XXX a tad ugly...
|
||||
&& (([arg, handler] = splitArgs(arg, rest)), handler))
|
||||
// dynamic or error...
|
||||
|| parsed.handler(type == 'opt' ? '-*' : '@*')[1]
|
||||
|| parsed.handler(dfl)[1]
|
||||
// no handler found and '-*' or '@*' not defined...
|
||||
if(handler == null){
|
||||
handleError('unknown', arg, rest)
|
||||
parsed.printError('unknown '+(type == 'opt' ? 'option:' : 'command:'), arg)
|
||||
return module.ERROR }
|
||||
// normalize output of splitArgs(..)
|
||||
;[arg, handler] = handler instanceof Array ?
|
||||
handler
|
||||
: [arg, handler]
|
||||
|
||||
// mark handler...
|
||||
;(handler.env || 'default' in handler)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user