* lib/Spreadsheet/Table/Extract.pm: Fix make_disjoint doc typo.

Make explain_overlap smarter * lib/Spreadsheet/Table/Extract.pm: + (explain_overlap): Check whether tables are actually disjoint before trying to report on overlap. * t/01-basic.t: + Add a test for same.

Make find_tables and extract return lists * lib/Spreadsheet/Table/Extract.pm: + (find_tables): Return a list rather than an arrayref. + (extract): Likewise. * t/01-basic.t: + Update the tests.

Have find_tables default the table name * lib/Spreadsheet/Table/Extract.pm: + (find_tables $make_table_descriptor): Default the table name if given a base_name. * t/01-basic.t: + Test same.

Make the find_tables minimum_slots param a keyword * lib/Spreadsheet/Table/Extract.pm: + (find_tables): Make minimum_slots a keyword instead of a positional parameter, adjust doc accordingly. * t/01-basic.t: + Update tests.

Support a better validate_object default * lib/Spreadsheet/Table/Extract.pm: + (extract): Support a reasonable default for validate_object, that just rejects blank rows. Also, wrap eval around instance creation. * t/01-basic.t: + Test same.

* lib/Spreadsheet/Table/Extract.pm: Add a description.

Use the first column definition if there are duplicates * lib/Spreadsheet/Table/Extract.pm: + (find_tables): Switch to ignoring second and subsequent column redefintions instead of taking the last one.

Instantiate tables of a specified class * lib/Spreadsheet/Table/Extract.pm: + (find_tables): Support instantiating tables of a different class from the invocant. * t/01-basic.t: + Test same.

Remove redundant find_tables code * lib/Spreadsheet/Table/Extract.pm: + (find_tables): Remove a redundant "while ($row <= $maxrow) ..." loop, move the $row variable accordingly.

Clean up column name whitespace * lib/Spreadsheet/Table/Extract.pm: + (find_tables): Clean up leading & trailing whitespace from potential column names before comparing, & update the doc to match.

Recognize side-by-side tables * lib/Spreadsheet/Table/Extract.pm: + (find_tables $have_enough_p): Helper sub. + (find_tables $make_table_descriptor): Another helper. + (find_tables): If we find a duplicate column and we have all required columns, then spin off a table with what we have, and start a new one. * t/01-basic.t: + Add a test for side-by-side table definitions. * t/data/side-by-side.gnumeric (added): + Test data for same.

Provide a default for the $min_slots arg to find_tables * lib/Spreadsheet/Table/Extract.pm: + (find_tables): Default $min_slots to mean require everything. * t/01-basic.t: + Test same.

Fix side-by-side table bug * lib/Spreadsheet/Table/Extract.pm: + (find_tables): Bug fix: Don't adjust last_row on $last_table if we find another; the tables might be side-by-side, and that would be up to make_disjoint to figure out.

* lib/Spreadsheet/Table/Extract.pm: Document

Update metadata per cpants_lint.pl * dist.ini: + Add MetaJSON and Prereqs, per cpants_lint.pl recommendations. + Also, tweak the abstract.

Fix tests for a Spreadsheet::ReadGnumeric bug * t/01-basic.t, t/data/basic-test-output.pm: + Update the multiple.gnumeric case for the Spreadsheet::ReadGnumeric maxcol & maxrow origin bug.

Make tables disjoint * lib/Spreadsheet/Table/Extract.pm: + (explain_overlap): Diagnostic tool (with perhaps TMI). + (overlaps): Test for overlapping tables. + (make_disjoint): Adjust last_row values to remove overlaps. * t/01-basic.t: + Add a test case for same.

Allow naming of extracted tables * lib/Spreadsheet/Table/Extract.pm: + Add a "name" slot. * t/01-basic.t: + Add names to the multiple.gnumeric tests. * t/data/basic-test-output.pm: + Changed test output.

Extract the overlapping multiple.gnumeric check table * t/01-basic.t: + Add a test that extracts the multiple.gnumeric checkbook table, which gets four more rows than it should because it doesn't know that this runs into the other tables.