feat: add components
This commit is contained in:
82
components/component-args.js
Normal file
82
components/component-args.js
Normal file
@@ -0,0 +1,82 @@
|
||||
var parseARGS = (kvKeys) => {
|
||||
return exports.parse($ARGS, kvKeys);
|
||||
};
|
||||
|
||||
var parse = (args, kvKeys) => {
|
||||
var newArgs = [];
|
||||
var keyValueMap = {};
|
||||
var keyFlagMap = {};
|
||||
|
||||
keyValueMap.vals = () => {
|
||||
var ret = [];
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
var v = keyValueMap[arguments[i]];
|
||||
if (v) { v.forEach((x) => { ret.push(x) } ); }
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
keyValueMap.val = () => {
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
var v = keyValueMap[arguments[i]] && keyValueMap[arguments[i]][0];
|
||||
if (v) { return v; }
|
||||
}
|
||||
return null;
|
||||
};
|
||||
keyFlagMap.flg = () => {
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
var v = keyFlagMap[arguments[i]];
|
||||
if (v) { return true; }
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
var kvKeyMap = {}; (kvKeys || []).forEach((k) => { kvKeyMap[k] = 1; });
|
||||
for (var i = 0; i < args.length; i++) {
|
||||
var arg = args[i];
|
||||
var key = null;
|
||||
if (arg.startsWith('--')) {
|
||||
key = arg.substring(2);
|
||||
} else if (arg.startsWith('-')) {
|
||||
key = arg.substring(1);
|
||||
if (key.length > 1) {
|
||||
for (var x = 0; x < key.length; x++) {
|
||||
var k = key.substring(x, 1);
|
||||
kvKeyMap[k] = 1;
|
||||
keyFlagMap[k] = 1;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ((key != null) && ((i + 1) < args.length) || kvKeyMap[key]) {
|
||||
if (kvKeyMap[key]) {
|
||||
keyFlagMap[key] = 1;
|
||||
} else {
|
||||
keyValueMap[key] = keyValueMap[key] || [];
|
||||
keyValueMap[key].push(args[++i]);
|
||||
}
|
||||
} else {
|
||||
newArgs.push(arg);
|
||||
}
|
||||
}
|
||||
return {
|
||||
args: newArgs,
|
||||
flags: keyFlagMap,
|
||||
values: keyValueMap
|
||||
};
|
||||
};
|
||||
|
||||
var parseDefARGs = (kvKeys) => {
|
||||
var args = parseARGS(kvKeys);
|
||||
var newArgs = args.args;
|
||||
newArgs.flg = args.flags.flg;
|
||||
newArgs.val = args.values.val;
|
||||
newArgs.vals = args.values.vals;
|
||||
return newArgs;
|
||||
};
|
||||
|
||||
|
||||
if (typeof exports == 'object') {
|
||||
exports.parse = parse;
|
||||
exports.parseARGS = parseARGS;
|
||||
exports.parseDefARGs = parseDefARGs;
|
||||
}
|
||||
Reference in New Issue
Block a user