Spaces:
Runtime error
Runtime error
| export function parseLine(l: string) { | |
| const res = l.match(/((?:\s+"[^"]+")|(?:[^,"]+))/g) || []; | |
| for (let i = 0; i < res.length; i++) { | |
| res[i] = res[i].replace(/^\s+/, '').replace(/^"/, '').replace(/[\r\n"]+$/, '') | |
| } | |
| return res; | |
| } | |
| export function parse(t: string, cb: (o: object) => void) { | |
| const lines = t.split('\n'); | |
| const header = parseLine(lines[0]); | |
| for (let i = 1; i < lines.length; i++) { | |
| if (!lines[i].length) { | |
| continue; | |
| } | |
| const l = parseLine(lines[i]) || [] | |
| if (l.length < header.length) { | |
| console.error(`couldn't parse '${lines[i]}' yielded '${l}' of length ${l.length} expected ${header.length}: ${header}`); | |
| return null; | |
| } | |
| const e = { [header[0]]: l[0] }; | |
| for (let j = 1; j < header.length; j++) { | |
| e[`${header[j]}`] = l[j]; | |
| } | |
| cb(e) | |
| } | |
| } | |