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) | |
} | |
} | |