= Change Log Below is a complete listing of changes for each revision of FasterCSV. == 1.5.0 * 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. == 1.4.0 * 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. == 1.2.3 * Default to the system line ending when passed a GzipWriter object to wrap. == 1.2.2 * Worked around GzipReader's lack of a seek() method so we could still use automatic row separator detection with them. == 1.2.1 * 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. == 1.2.0 * Added the FasterCSV::table() shortcut. == 1.1.1 * Added a :force_quotes output option. == 1.1.0 * 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. == 1.0.0 * 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. == 0.2.1 * Removed autorequire from GemSpec. * Made Rakefile VERSION aware. * General Rakefile cleanup. == 0.2.0 * 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 FCSV alias for FasterCSV. * Added FasterCSV::instance() and FasterCSV()/FCSV() shortcuts for easy output. == 0.1.9 * Fixing the require "English" bug. == 0.1.8 * 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?(). == 0.1.6 * 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. == 0.1.4 * Fixed :col_sep escaping bug (reported by Kev Jackson). * Switched to the use of named parsers internally. == 0.1.3 * Fixed typo in gem spec causing a require bug. == 0.1.2 * Built gem with Ruby 1.8.2, to bypass YAML/RubyGems issue. == 0.1.1 * 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. == 0.1.0 * Initial public release.