mirror of
https://github.com/flynx/argv.js.git
synced 2025-10-29 18:50:09 +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
|
// NOTE: opts and commands do not follow the same path here
|
||||||
// because options if unidentified need to be split into
|
// because options if unidentified need to be split into
|
||||||
// single letter options and commands to not...
|
// single letter options and commands to not...
|
||||||
var type = opt_pattern.test(arg) ?
|
var [type, dfl] = opt_pattern.test(arg) ?
|
||||||
'opt'
|
['opt', parsed.optionPrefix +'*']
|
||||||
: parsed.isCommand(arg) ?
|
: parsed.isCommand(arg) ?
|
||||||
'cmd'
|
['cmd', parsed.commandPrefix +'*']
|
||||||
: 'unhandled'
|
: ['unhandled']
|
||||||
// options / commands...
|
// options / commands...
|
||||||
if(type != 'unhandled'){
|
if(type != 'unhandled'){
|
||||||
// quote '-*' / '@*'...
|
// quote '-*' / '@*'...
|
||||||
arg = arg.replace(/^(.)\*$/, '$1\\*')
|
arg = arg.replace(/^(.)\*$/, '$1\\*')
|
||||||
// get handler...
|
// get handler...
|
||||||
var handler = parsed.handler(arg)[1]
|
var handler = parsed.handler(arg)[1]
|
||||||
// handle merged options
|
// handle merged options...
|
||||||
// NOTE: if successful returns array...
|
// NOTE: we replace arg here...
|
||||||
|| (type == 'opt'
|
|| (type == 'opt'
|
||||||
&& parsed.splitOptions
|
&& parsed.splitOptions
|
||||||
&& splitArgs(arg, rest))
|
// XXX a tad ugly...
|
||||||
|
&& (([arg, handler] = splitArgs(arg, rest)), handler))
|
||||||
// dynamic or error...
|
// dynamic or error...
|
||||||
|| parsed.handler(type == 'opt' ? '-*' : '@*')[1]
|
|| parsed.handler(dfl)[1]
|
||||||
// no handler found and '-*' or '@*' not defined...
|
// no handler found and '-*' or '@*' not defined...
|
||||||
if(handler == null){
|
if(handler == null){
|
||||||
handleError('unknown', arg, rest)
|
handleError('unknown', arg, rest)
|
||||||
parsed.printError('unknown '+(type == 'opt' ? 'option:' : 'command:'), arg)
|
parsed.printError('unknown '+(type == 'opt' ? 'option:' : 'command:'), arg)
|
||||||
return module.ERROR }
|
return module.ERROR }
|
||||||
// normalize output of splitArgs(..)
|
|
||||||
;[arg, handler] = handler instanceof Array ?
|
|
||||||
handler
|
|
||||||
: [arg, handler]
|
|
||||||
|
|
||||||
// mark handler...
|
// mark handler...
|
||||||
;(handler.env || 'default' in handler)
|
;(handler.env || 'default' in handler)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user