File size: 662 Bytes
ac3107a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
// problemParser.js

export function parseProblems(output) {
  if (!output) return [];

  const lines = output.split("\n");
  const problems = [];

  const regexes = [
    // Python
    { re: /(File "(.+)", line (\d+))/, lang: "python" },
    // Java
    { re: /(.*\.java):(\d+): (.+)/, lang: "java" },
    // JS
    { re: /(.*):(\d+):(\d+)/, lang: "js" },
  ];

  for (let line of lines) {
    for (let { re, lang } of regexes) {
      const m = line.match(re);
      if (m) {
        problems.push({
          file: m[2] || m[1],
          line: m[3] || m[2],
          message: m[4] || m[0],
          lang,
        });
      }
    }
  }
  return problems;
}