All files / src/repl replEval.js

0% Statements 0/15
0% Branches 0/8
0% Functions 0/7
0% Lines 0/13

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                                                   
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 results = Object.entries(args).map(([key, value]) => {
      const cmd = commands.opts.find(_ => _.args.includes(key)) || { action: defaultAction }
      const action = cmd.action || defaultAction
 
      return typeof action === 'undefined' ? mode.resolve() : 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
}