This patch introduces Koha::CSV, a wrapper around Text::CSV_XS that
provides consistent defaults and methods for CSV generation across Koha.
The class:
- Inherits CSV delimiter from CSVDelimiter system preference
- Enforces security defaults (binary=1, formula='empty')
- Provides convenient methods for common CSV operations
- Allows per-instance configuration overrides
This establishes a foundation for standardizing CSV exports throughout
Koha, eliminating inconsistencies in CSV generation and providing a
testable, maintainable approach to CSV handling.
Test plan:
1. Apply patch
2. Run:
$ ktd --shell
k$ prove t/Koha/CSV.t
=> SUCCESS: Tests pass!
3. Tests cover:
- Default initialization with CSVDelimiter preference
- Preference value inheritance (comma, semicolon, tabulation)
- Constructor parameter overrides
- add_row() method with various data types
- combine() and string() methods
- print() to filehandle
- Proper quote escaping and empty field handling
4. Sign off :-D
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>