Below is a complete listing of changes for each revision of FasterCSV.
Removed setup.rb due to licensing concerns.
Updated and clarified Copyright notices.
Improved stray quoting error message (patch by Edvard Majakari).
Improved line ending detection algorithm (patch by Alexey Smolianinov).
Improved test coverage for the parser.
Improved documentation.
Fixed a bug that prevented ^
from being used as
:quote_char
.
Switched from abort() to throwing exceptions on Ruby 1.9.
A bug fix from Timothy Elliott to return the new parser to its strict quote tolerance.
A bug fix to allow IO Exceptions to reach the calling code from Moses Hohman.
Added support for :write_headers => false
to
Table.to_csv().
A bug fix for deleting blank Table rows from Andy Hartford.
Added gem build instructions.
The main parser has been rewritten by Timothy Elliott to avoid big input issues with Ruby 1.8's regex engine. This makes FasterCSV handle more inputs gracefully.
FasterCSV will now exit with a notice to upgrade if required in Ruby 1.9.
Included a missing file so the tests will run in source packages.
Added encoding support patch from Michael Reinsch.
Improved inspect() messages for better IRb support.
Fixed header writing bug reported by Dov Murik.
Use custom separators in parsing header Strings as suggested by Shmulik Regev.
Added a :write_headers
option for outputting headers.
Handle open() calls in binary mode whenever we can to workaround a Windows
issue where line-ending translation can cause an off-by-one error in
seeking back to a non-zero starting position after auto-discovery for
:row_sep
as suggested by Robert Battle.
Improved the parser to fail faster when fed some forms of invalid CSV that can be detected without reading ahead.
Added a :field_size_limit
option to control FasterCSV's
lookahead and prevent the parser from biting off more data than it can
chew.
Default to the system line ending when passed a GzipWriter object to wrap.
Worked around GzipReader's lack of a seek() method so we could still use automatic row separator detection with them.
Worked around an odd incompatibility with the Regexps used to remove line endings in some (seemingly rare) Ruby environments.
Made FasterCSV::lineno() writer aware.
Support Hashes in FasterCSV#<<(), by detecting headers when writing.
Added limited support for switching the quote character.
Refining Data and DateTime matching for built-in convertors.
Added the FasterCSV.table shortcut.
Added a :force_quotes
output option.
Added empty?(), length(), and size() methods to FasterCSV::Row and FasterCSV::Table.
Cleaned up bug fix regression tests.
Fixed bug causing Arrays to be returned for blank rows when header processing is active.
Added a :skip_blanks
option for ignoring empty rows.
Fixed FasterCSV#rewind to reset the FasterCSV#lineno counter.
Fixed FasterCSV#rewind to reset the header processing.
Fixed documentation typos.
Switched STDOUT and STDERR usage to $stdout and $stderr where appropriate.
Added FasterCSV::Row.==().
Enhanced FasterCSV::Row#fields to support Ranges, even for headers.
The slurping methods now return the new FasterCSV::Table objects.
Fixed parser so multibyte :col_sep
works now.
Added a few examples for usage.
Removed autorequire from GemSpec.
Made Rakefile VERSION aware.
General Rakefile cleanup.
Added VERSION constant.
Significantly improved test speed.
Worked around Date::parse() bug so tests will pass on Windows.
Documented test procedure.
Made FasterCSV#lineno CSV aware.
Added line numbers to MalformedCSVError messages.
:headers
can now be set to an Array
of headers to use.
:headers
can now be set to an external CSV String of headers to use.
Added an :unconverted_fields
options, so those can be returned
when needed.
Provided support for the serialization of custom Ruby objects using CSV.
Added CSV drop-in interface.
Added header information to FieldInfo Struct for conversions by header.
Added an alias to support require "fastercsv"
.
Added FasterCSV.instance and FasterCSV()/FCSV() shortcuts for easy output.
Fixing the require “English” bug.
Converted FasterCSV.filter to use ARGF for input.
Made FasterCSV.<<() aware of FasterCSV::Row objects.
Switched header rows to include the unconverted headers as fields.
Rescued IOError when trying to auto detect a line-ending on an output stream and used the default system line-ending.
Added FasterCSV::Row#header_row? and FasterCSV::Row#field_row?.
Began using a forked development/stable versioning system.
Reorganized initialization code for easier additions and maintenance.
Added a check for unknown options. Exceptions will now be thrown for them.
Added built-in and custom data converters. Built-in handle numbers and dates.
Added Array#to_csv and String#parse_csv. Both accept normal options.
Project moved to RubyForge Subversion.
Added auto-discovery for :row_sep
(now the default).
Added FasterCSV.filter for easy Unix-like CSV filters.
Added support for accessing fields by headers.
Headers can have their own converters.
Headers can be skipped or returned as needed.
FasterCSV::Row allows index or header access while retaining order and allowing for duplicate headers.
Fixed :col_sep
escaping bug (reported by Kev Jackson).
Switched to the use of named parsers internally.
Fixed typo in gem spec causing a require bug.
Built gem with Ruby 1.8.2, to bypass YAML/RubyGems issue.
Built gem with Ruby 1.8.4 Preview 1, to try and bypass YAML/RubyGems issue.
Added missing test file to released packages.
Clarified call-seq documentation for open() and parse().
Clarified passed String positions for new(), in documentation.
Expanded generate() to handle appending to an existing String.
Initial public release.