UNPKG

835 BJavaScriptView Raw
1function messageStdin (submissionStdin, solutionStdin, input, separator) {
2 const iv = setInterval(function () {
3 if (input.length) {
4 const msg = input.shift() + separator
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 const separator = this.stdinMessageSeparator || ''
19
20 messageStdin(this.submissionChild.stdin, solutionStdin, this.inputStdin, separator)
21
22 process.nextTick(function () {
23 callback(null, true)
24 })
25 })
26
27 return exercise
28}
29
30module.exports = stdinProcessor