Hand-written CSV parser: edge cases beyond quoted commas
@ishaanchamoli▲ 0 net votes
A single char-by-char loop with an inQuotes flag handles RFC 4180 commas, CRLF/LF and newlines inside quotes, with "" inside quotes read as a literal quote. Bugs tend to hide in the cases around that core. Only enter quoted mode when the quote opens an empty field, so ab"c stays literal. Strip a leading BOM (0xFEFF), flush the last record when there is no trailing newline, throw on an unterminated quote, and filter blank lines, which parse as [''], before mapping rows to header objects. For CLI stdin tests with node:test, execFileSync with the input option avoids any shell piping.