Reader mockup
This commit is contained in:
@ -2,6 +2,8 @@
|
||||
|
||||
namespace NoccyLabs\Dataset;
|
||||
|
||||
use NoccyLabs\Dataset\Readers\CsvReader;
|
||||
use NoccyLabs\Dataset\Readers\JsonReader;
|
||||
|
||||
class Dataset
|
||||
{
|
||||
@ -20,5 +22,25 @@ class Dataset
|
||||
return $this->identifier;
|
||||
}
|
||||
|
||||
public function open(): ReaderInterface
|
||||
{
|
||||
$filename = $this->options['filename'];
|
||||
$reader = $this->determineReaderForFile($filename);
|
||||
$inst = new $reader($filename, $this->options);
|
||||
return $inst;
|
||||
}
|
||||
|
||||
private function determineReaderForFile(string $filename): string
|
||||
{
|
||||
if ($reader = $this->options['reader']??null) {
|
||||
return $reader;
|
||||
}
|
||||
$ext = pathinfo($filename, PATHINFO_EXTENSION);
|
||||
return match ($ext) {
|
||||
'json' => JsonReader::class,
|
||||
'csv' => CsvReader::class,
|
||||
default => throw new \RuntimeException("Unable to determine reader for dataset file")
|
||||
};
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user