UNPKG

855 BJavaScriptView Raw
1function messageStdin (submissionStdin, solutionStdin, input, separator) {
2 const iv = setInterval(function () {
3 if (input.length) {
4 const msg = separator ? input.shift() + separator : input.shift()
5 submissionStdin.write(msg)
6 if (solutionStdin) solutionStdin.write(msg)
7 } else {
8 clearInterval(iv)
9 submissionStdin.end()
10 if (solutionStdin) solutionStdin.end()
11 }
12 }, 50)
13}
14
15function stdinProcessor (exercise) {
16 exercise.addProcessor(function (mode, callback) {
17 const solutionStdin = (mode === 'verify') ? this.solutionChild.stdin : null
18
19 messageStdin(
20 this.submissionChild.stdin,
21 solutionStdin,
22 this.inputStdin,
23 this.stdinMessageSeparator
24 )
25
26 process.nextTick(function () {
27 callback(null, true)
28 })
29 })
30
31 return exercise
32}
33
34module.exports = stdinProcessor