Comparing version 0.1.5 to 0.1.6
107
index.js
@@ -44,4 +44,2 @@ module.exports = Argv; | ||
self.argv = { _ : [], $0 : self.$0 }; | ||
function set (key, val) { | ||
@@ -62,48 +60,77 @@ var num = Number(val); | ||
for (var i = 0; i < args.length; i++) { | ||
var arg = args[i]; | ||
var flags = { bools : {} }; | ||
self.boolean = function (bools) { | ||
if (!Array.isArray(bools)) { | ||
bools = [].slice.call(arguments); | ||
} | ||
if (arg == '--') { | ||
self.argv._.push.apply(self.argv._, args.slice(i + 1)); | ||
break; | ||
} | ||
else if (arg.match(/^--.+=/)) { | ||
var m = arg.match(/^--([^=]+)=(.*)/); | ||
set(m[1], m[2]); | ||
} | ||
else if (arg.match(/^--no-.+/)) { | ||
var key = arg.match(/^--no-(.+)/)[1]; | ||
set(key, false); | ||
} | ||
else if (arg.match(/^--.+/)) { | ||
var key = arg.match(/^--(.+)/)[1]; | ||
var next = args[i + 1]; | ||
if (next !== undefined && !next.match(/^-/)) { | ||
set(key, next); | ||
i++; | ||
bools.forEach(function (name) { | ||
flags.bools[name] = true; | ||
}); | ||
rescan(); | ||
bools.forEach(function (name) { | ||
if (!self.argv[name]) { | ||
self.argv[name] = false; | ||
} | ||
else { | ||
set(key, true); | ||
} | ||
} | ||
else if (arg.match(/^-[^-]+/)) { | ||
arg.slice(1,-1).split('').forEach(function (letter) { | ||
set(letter, true); | ||
}); | ||
}); | ||
return self; | ||
}; | ||
function rescan () { | ||
self.argv = { _ : [], $0 : self.$0 }; | ||
for (var i = 0; i < args.length; i++) { | ||
var arg = args[i]; | ||
var key = arg.slice(-1)[0]; | ||
if (args[i+1] && !args[i+1].match(/^-/)) { | ||
set(key, args[i+1]); | ||
i++; | ||
if (arg == '--') { | ||
self.argv._.push.apply(self.argv._, args.slice(i + 1)); | ||
break; | ||
} | ||
else if (arg.match(/^--.+=/)) { | ||
var m = arg.match(/^--([^=]+)=(.*)/); | ||
set(m[1], m[2]); | ||
} | ||
else if (arg.match(/^--no-.+/)) { | ||
var key = arg.match(/^--no-(.+)/)[1]; | ||
set(key, false); | ||
} | ||
else if (arg.match(/^--.+/)) { | ||
var key = arg.match(/^--(.+)/)[1]; | ||
var next = args[i + 1]; | ||
if (next !== undefined && !next.match(/^-/) | ||
&& !flags.bools[key]) { | ||
set(key, next); | ||
i++; | ||
} | ||
else { | ||
set(key, true); | ||
} | ||
} | ||
else if (arg.match(/^-[^-]+/)) { | ||
arg.slice(1,-1).split('').forEach(function (letter) { | ||
set(letter, true); | ||
}); | ||
var key = arg.slice(-1)[0]; | ||
if (args[i+1] && !args[i+1].match(/^-/) | ||
&& !flags.bools[key]) { | ||
set(key, args[i+1]); | ||
i++; | ||
} | ||
else { | ||
set(key, true); | ||
} | ||
} | ||
else { | ||
set(key, true); | ||
var n = Number(arg); | ||
self.argv._.push(isNaN(n) ? arg : n); | ||
} | ||
} | ||
else { | ||
var n = Number(arg); | ||
self.argv._.push(isNaN(n) ? arg : n); | ||
} | ||
} | ||
rescan(); | ||
@@ -110,0 +137,0 @@ var usage; |
{ | ||
"name" : "optimist", | ||
"version" : "0.1.5", | ||
"version" : "0.1.6", | ||
"description" : "Light-weight option parsing with an argv hash. No optstrings attached.", | ||
@@ -5,0 +5,0 @@ "main" : "./index.js", |
@@ -162,1 +162,24 @@ var optimist = require('optimist'); | ||
}; | ||
exports['flag boolean'] = function (assert) { | ||
var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv; | ||
assert.eql(parse, { t : true, _ : [ 'moo' ], $0 : 'expresso' }); | ||
assert.eql(typeof parse.t, 'boolean'); | ||
}; | ||
exports['boolean groups'] = function (assert) { | ||
var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ]) | ||
.boolean(['x','y','z']).argv; | ||
assert.eql(parse, { | ||
x : true, | ||
y : false, | ||
z : true, | ||
_ : [ 'one', 'two', 'three' ], | ||
$0 : 'expresso', | ||
}); | ||
assert.eql(typeof parse.x, 'boolean'); | ||
assert.eql(typeof parse.y, 'boolean'); | ||
assert.eql(typeof parse.z, 'boolean'); | ||
}; |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
26911
21
689
203