Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | const combine = require('../dsl/fp/combine') const option = require('../dsl/fp/option') module.exports = parser => ({errs = [], argv = []} = {}) => { let errs2 = [] const argv2 = {_: []} for (let i = 0; i < argv.length; i++) { const [arg, params, types, opts] = argv[i] if (typeof types === 'undefined') { if (arg !== '--') argv2['_'].push(arg) } else if (types === null) { const options = [] for (let j = 0; j < (opts || []).length; j++) { const opt = opts[j] options.push(option(opt)) } const combined = combine(...options) const parse = parser(combined || {}) const {errs: errs3, argv} = parse({errs: [], argv: params}) errs2 = errs3 argv2[arg] = Object.assign({}, argv2[arg], argv) } else if (types.length === 0) { argv2[arg] = typeof argv2[arg] === 'undefined' ? true : argv2[arg] < 2 ? 2 : argv2[arg] + 1 } else { argv2[arg] = types.length === 1 ? params[0] : params } } return {errs: errs.concat(errs2), argv: argv2} } |