type

CsvInStream

src @Js
class CsvInStream : InStream

CsvInStream is used to read delimiter-separated values as specified by RFC 4180. Format details:

  • rows are delimited by a newline
  • cells are separated by delimiter char
  • cells may be quoted with " character
  • quoted cells may contain the delimiter
  • quoted cells may contain newlines (always normalized to "\n")
  • quoted cells must escape " with ""
  • the trim flag trims leading/trailing whitespace from non-quoted cells (note that RFC 4180 specifies that whitespace is significant)

Also see CsvOutStream.

constructors

make

Wrap the underlying input stream.

fields

delimiter

Delimiter character; defaults to comma.

trim

Configures whether unqualified whitespace around a cell is automatically trimmed.

methods

eachRow

Iterate through all the lines parsing each one into delimited-separated strings and calling the given callback functions.

readAllRows

Read the entire table of rows into memory.

readRow

Read the next line as a row of delimiter-separated strings.

Slot Details

delimiter

src Int delimiter := 44

Delimiter character; defaults to comma.

eachRow

src Void eachRow(|Str[]| f)

Iterate through all the lines parsing each one into delimited-separated strings and calling the given callback functions. The input stream is guaranteed to be closed upon completion.

make

src new make(InStream in)

Wrap the underlying input stream.

readAllRows

src Str[][] readAllRows()

Read the entire table of rows into memory. The input stream is guaranteed to be closed upon completion.

readRow

src virtual Str[]? readRow()

Read the next line as a row of delimiter-separated strings. Return null if at end of stream.

trim

src Bool trim := true

Configures whether unqualified whitespace around a cell is automatically trimmed. If a field is enclosed by quotes then it is never trimmed.