This constructor will wrap either a String or IO
object passed in data for reading and/or writing.  In addition
to the CSV instance methods, several IO methods are delegated.  (See ::open for a complete list.)  If you pass
a String for data, you can later retrieve it (after writing to
it, for example) with CSV.string().
Note that a wrapped String will be positioned at at the beginning (for reading). If you want it at the end (for writing), use ::generate. If you want any other positioning, pass a preset StringIO object instead.
You may set any reading and/or writing preferences in the
options Hash. Available options are:
- 
:col_sep - 
The String placed between each field. This String will be transcoded into the data's Encoding before parsing.
 - 
:row_sep - 
The String appended to the end of each row. This can be set to the special
:autosetting, which requests that CSV automatically discover this from the data. Auto-discovery reads ahead in the data looking for the next"\r\n","\n", or"\r"sequence. A sequence will be selected even if it occurs in a quoted field, assuming that you would have the same line endings there. If none of those sequences is found,dataisARGF,STDIN,STDOUT, orSTDERR, or the stream is only available for output, the default$INPUT_RECORD_SEPARATOR($/) is used. Obviously, discovery takes a little time. Set manually if speed is important. Also note that IO objects should be opened in binary mode on Windows if this feature will be used as the line-ending translation can cause problems with resetting the document position to where it was before the read ahead. This String will be transcoded into the data's Encoding before parsing. - 
:quote_char - 
The character used to quote fields. This has to be a single character String. This is useful for application that incorrectly use
'as the quote character instead of the correct". CSV will always consider a double sequence this character to be an escaped quote. This String will be transcoded into the data's Encoding before parsing. - 
:field_size_limit - 
This is a maximum size CSV will read ahead looking for the closing quote for a field. (In truth, it reads to the first line ending beyond this size.) If a quote cannot be found within the limit CSV will raise a MalformedCSVError, assuming the data is faulty. You can use this limit to prevent what are effectively DoS attacks on the parser. However, this limit can cause a legitimate parse to fail and thus is set to
nil, or off, by default. - 
:converters - 
An Array of names from the Converters Hash and/or lambdas that handle custom conversion. A single converter doesn't have to be in an Array. All built-in converters try to transcode fields to UTF-8 before converting. The conversion will fail if the data cannot be transcoded, leaving the field unchanged.
 - 
:unconverted_fields - 
If set to
true, an unconverted_fields() method will be added to all returned rows (Array or CSV::Row) that will return the fields as they were before conversion. Note that:headerssupplied by Array or String were not fields of the document and thus will have an empty Array attached. - 
:headers - 
If set to
:first_rowortrue, the initial row of the CSV file will be treated as a row of headers. If set to an Array, the contents will be used as the headers. If set to a String, the String is run through a call of ::parse_line with the same:col_sep,:row_sep, and:quote_charas this instance to produce an Array of headers. This setting causes #shift to return rows as CSV::Row objects instead of Arrays and #read to return CSV::Table objects instead of an Array of Arrays. - 
:return_headers - 
When
false, header rows are silently swallowed. If set totrue, header rows are returned in a CSV::Row object with identical headers and fields (save that the fields do not go through the converters). - 
:write_headers - 
When
trueand:headersis set, a header row will be added to the output. - 
:header_converters - 
Identical in functionality to
:converterssave that the conversions are only made to header rows. All built-in converters try to transcode headers to UTF-8 before converting. The conversion will fail if the data cannot be transcoded, leaving the header unchanged. - 
:skip_blanks - 
When set to a
truevalue, CSV will skip over any rows with no content. - 
:force_quotes - 
When set to a
truevalue, CSV will quote all CSV fields it creates. - 
:skip_lines - 
When set to an object responding to
match, every line matching it is considered a comment and ignored during parsing. When set tonilno line is considered a comment. If the passed object does not respond tomatch,ArgumentErroris thrown. 
See CSV::DEFAULT_OPTIONS for the default settings.
Options cannot be overridden in the instance methods for performance reasons, so be sure to set what you want here.
Please login to continue.