1 | function 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 |
|
15 | function 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 |
|
30 | module.exports = stdinProcessor
|