NAME

       ::csv - Procedures to handle CSV data


SYNOPSIS

       package require csv ?0.1?

       ::csv::join values {sepChar ,}

       ::csv::joinlist values {sepChar ,}

       ::csv::read2matrix chan m {sepChar ,}

       ::csv::read2queue chan q {sepChar ,}

       ::csv::report cmd matrix ?chan?

       ::csv::split line {sepChar ,}

       ::csv::split2queue q line {sepChar ,}

       ::csv::writematrix m chan {sepChar ,}

       ::csv::writequeue q chan {sepChar ,}

_________________________________________________________________


DESCRIPTION

       The ::csv package provides commands to manipulate informa­
       tion in CSV format (CSV = Comma Separated Values).


COMMANDS

       The following commands are available:

       ::csv::join values {sepChar ,}
              Takes a list of values and returns a string in  CSV
              format containing these values. The separator char­
              acter can be defined by the  caller,  but  this  is
              optional. The default is ",".

       ::csv::joinlist values {sepChar ,}
              Takes  a  list  of  lists  of  values and returns a
              string in CSV format containing these  values.  The
              separator  character  can be defined by the caller,
              but this is optional. The default is ",". Each ele­
              ment  of  the  outer  list  is considered a record,
              these are separated by newlines in the result.  The
              elements of each record are formatted as usual (via
              ::csv::join).

       ::csv::read2matrix chan m {sepChar ,}
              A wrapper around  ::csv::split2matrix  (see  below)
              reading from CSV-formatted lines from the specified

              matrix.

       ::csv::read2queue chan q {sepChar ,}
              A  wrapper  around  ::csv::split2queue  (see below)
              reading from CSV-formatted lines from the specified
              channel  (until  EOF)  and  adding  it to the given
              queue.

       ::csv::report cmd matrix ?chan?
              A report command which can be used  by  the  matrix
              methods  format  2string  and format 2chan. For the
              latter  this  command   delegates   the   work   to
              ::csv::writematrix.  cmd  is  expected to be either
              "printmatrix" or "printmatrix2channel". The channel
              argument,  chan,  has  to be present for the latter
              and must not be present for the first.

       ::csv::split line {sepChar ,}
              converts a line in CSV format into a  list  of  the
              values contained in the line. The character used to
              separate the values from each other can be  defined
              by  the  caller, via sepChar, but this is optional.
              The default is ",".

       ::csv::split2matrix m line {sepChar ,}
              The same as ::csv::split, but appends the resulting
              list as a new row to the matrix m, using the method
              add row. It is the responsibility of the caller  to
              ensure  that  the matrix has enough columns to con­
              tain the full line. If there are not enough columns
              the list of values is silently truncated at the end
              to fit.

       ::csv::split2queue q line {sepChar ,}
              The same as ::csv::split, but appending the result­
              ing list as a single item to the queue q, using the
              method put.

       ::csv::writematrix m chan {sepChar ,}
              A wrapper around ::csv::join taking all rows in the
              matrix  m  and  writing them CSV formatted into the
              channel chan.

       ::csv::writequeue q chan {sepChar ,}
              A wrapper around ::csv::join taking  all  items  in
              the queue q (assumes that they are lists) and writ­
              ing them CSV formatted into the channel chan.


FORMAT

       Each record of a  csv  file  (comma-separated  values,  as
       exported e.g. by Excel) is a set of ASCII values separated
       by ",".  For  other  languages  it  may  be  ";"  however,
       although   this  is  not  important  for  this  case  (The


       If a value contains itself the separator ",", then it (the
       value) is put between "".

       If a value contains ", it is replaced by "".


EXAMPLE

       The record

       *      123,"123,521.2","Mary says ""Hello, I am Mary"""

       is parsed as follows:

       a)     123

       b)     123,521.2

       c)     Mary says "Hello, I am Mary"


SEE ALSO


KEYWORDS

       csv


Man(1) output converted with man2html