@tamgl/colyseus-schema
Version:
Binary state serializer with delta encoding for games
41 lines • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @author Ethan Davis
* https://github.com/ethanent/gar
*/
exports.default = (sargs) => {
let props = {};
let lones = [];
const convertIfApplicable = (value) => (isNaN(value) ? (value.toString().toLowerCase() === 'true' ? true : (value.toString().toLowerCase() === 'false' ? false : value)) : Number(value));
const removeStartHyphens = (value) => value.replace(/^\-+/g, '');
for (let i = 0; i < sargs.length; i++) {
const equalsIndex = sargs[i].indexOf('=');
const isNextRefProp = sargs[i].charAt(0) === '-' && sargs.length - 1 >= i + 1 && sargs[i + 1].indexOf('=') === -1 && sargs[i + 1].charAt(0) !== '-';
const argName = equalsIndex === -1 ? removeStartHyphens(sargs[i]) : removeStartHyphens(sargs[i].slice(0, equalsIndex));
if (equalsIndex !== -1) {
props[argName] = convertIfApplicable(sargs[i].slice(equalsIndex + 1));
}
else if (isNextRefProp) {
props[argName] = convertIfApplicable(sargs[i + 1]);
i++;
}
else if (sargs[i].charAt(0) === '-') {
if (sargs[i].charAt(1) === '-') {
props[argName] = true;
}
else {
for (let b = 0; b < argName.length; b++) {
props[argName.charAt(b)] = true;
}
}
}
else {
lones.push(convertIfApplicable(argName));
}
}
return Object.assign(props, {
'_': lones
});
};
//# sourceMappingURL=argv.js.map