CsvReader accepte une instance de IReader

This commit is contained in:
Jephté Clain 2025-05-15 18:06:14 +04:00
parent 43c53b286a
commit b1fc572fd8
2 changed files with 10 additions and 1 deletions

View File

@ -40,4 +40,6 @@ interface IReader extends _IFile {
function unserialize(?array $options=null, bool $close=true, bool $alreadyLocked=false);
function copyTo(IWriter $dest, bool $closeWriter=false, bool $closeReader=true): void;
function setCsvFlavour(?string $flavour): void;
}

View File

@ -2,7 +2,9 @@
namespace nulib\file\csv;
use nulib\file;
use nulib\file\_IFile;
use nulib\file\FileReader;
use nulib\file\IReader;
use nulib\file\tab\AbstractReader;
use nulib\file\tab\TAbstractReader;
@ -20,7 +22,12 @@ class CsvReader extends AbstractReader {
protected ?string $inputEncoding;
function getIterator() {
$reader = new FileReader(file::fix_dash($this->input));
$input = $this->input;
if ($input instanceof IReader) {
$reader = $input;
} else {
$reader = new FileReader(file::fix_dash($input));
}
$inputEncoding = $this->inputEncoding;
if ($inputEncoding !== null) {
$reader->appendFilter("convert.iconv.$inputEncoding.utf-8");