== 0.8.1 / 2017-07-18 * Do not include optional headers in #missing_headers * Improve string parsing to strip trailing '.0' from incoming float values * Add #to_h to Row for consistency with Column * Bugfix for calls to #add_error with invalid calling signature == 0.8.0 / 2017-06-29 * Breaking Change: change signature of Importer#add_error to support new features * Breaking Change: Importer.missing_headers will be [] instead of nil on all headers found * Breaking Change: remove deprecated method Column#required! * Add Importer#rows to directly access rows post-import * Add Column#optional! to enable non-mandatory columns during header detection * Add Column#present? and Column#missing? to test for presence after import attempt * Add Importer#validate_columns to allow detecting invalid column combinations * Add Importer#validate_rows to allow whole-row validation * Add Importer#virtual_column and Column#calculate to enable virtual columns * Track actual header text found for columns * Update Column#to_s to use actual header text when present * Revamp error tracking significantly to provide better reporting ability * Improve error tracking to include row/column when knowable * Improve error tracking to include problem values when knowable * Add Column#error_values to return unique raw error values by column * Add Column#error_values? which will be true when there is at least one error value for the column * Add Row#error_map to return map of column key => raw value for each row * Change Column#parse block processing to allow explicit #add_error call * Change Column#validate block processing to allow explicit #add_error call and to add an implicit error on returned false == 0.7.0 / 2017-02-16 * Breaking Change: Removed multi-sheet support - use multiple importers instead * Breaking Change: Removed warnings as they were confusing and not being used * Deprecate Column#required! due to bugginess and overlap with Column#validate * Add new HtmlReader support to handle parsing HTML rows * Add Importer#scope to allow narrowing the search to one or more sheets/tables when importing * Modify Importer#import to support block mode combining #import and #process * Add Importer#import_string for handling explicit CSV/HTML/Custom text * Add Importer#on_error(&block) to allow inline conditional error handling * Improve error message when headers can't be detected to list missing headers * Change Importer#error_summary to group identical errors into single summary line * Improve :cents type column rounding to better handle floating point ugliness * Much improved test coverage and documentation == 0.6.1 / 2015-08-24 * Better handling for nil return value in custom format readers == 0.6.0 / 2015-08-17 * Refactored readers to allow for custom format reading * Vastly improved internal and user-facing comments * Improved error logging, replaced some exceptions with errors == 0.5.0 / 2015-03-19 * Initial revision * Support for CSV, XLS and XLSX importing * Multiple sheet support * Automatic header and start-of-data detection * Value coercion to :string, :integer, :float, :date, and :cents * Custom parsing of raw cell values * Custom validation of cell values * Conditional row filtering * Error and warning aggregation, by sheet/row as appropriate * Automatic stream-to-file conversion where needed by underlying libs