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 35 36 37 38 39 40 41 42 43 44 45 | const {UnknownCommand} = require('./errors') const {pipe} = require('./pipe') const replEvalF = mode => (parser, commands, defaultAction) => { const parse = parser(commands) return (cmd, context, filename, callback) => { const {errs, args} = parse(cmd) const _ = args._ || [] if (_.length > 0) { _.map(cmd => errs.push(UnknownCommand({cmd})) ) } const entries = Object.entries(args).filter(([key]) => key !== '_') if (entries.length === 0) { defaultAction({cmd}, errs) } const results = entries.map(([key, value]) => { const cmd = commands.opts.find(_ => _.args.includes(key)) || { action: defaultAction } const action = cmd.action || defaultAction if (typeof action === 'undefined') { return mode.resolve() } else { return mode.resolve(action(value, errs)) } }) return pipe( mode.all, mode.then(() => callback(null, undefined)), mode.catch(err => callback(null, err === null ? undefined : err)) )(results) } } module.exports = { replEvalF } |