This package is a library for performing a simple to file operations hacklang.
Will provide a lightweight and simple api to the user.
Read processing of files can be realized by a simple code as follows.
use HHPack\File\FileLineStream;
$lineStream = FileLineStream::fromString('/path/to/text.log');
foreach ($lineStream as $line) {
echo $line->length(), "\n"; //output length
echo $line->value(), "\n"; //output content
};
use HHPack\File\FileLineStream;
use HHPack\File\SeparatedRecordStream;
use HHPack\File\ColumnSpecification;
$spec = new ColumnSpecification(',', '"');
$spec->addColumn(0, 'name');
$spec->addColumn(1, 'description');
$lineStream = FileLineStream::fromString(__DIR__ . '/example.csv');
$csvStream = new SeparatedRecordStream($lineStream, $spec);
foreach ($csvStream as $record) {
echo $record->get('name'), "\n";
echo $record->get('description'), "\n";
}
Will create a parser that implements the ParseSpecification.
Then use the ParsedFileReader, and then apply the parser.
use HHPack\File\FileLineStream;
use HHPack\File\ParsedChunkStream;
use HHPack\File\ParseSpecification;
final class CustomRecordSpecification implements ParseSpecification<array<string>>
{
public function parse(Chunk $line) : array<string>
{
return $line->split(',');
}
}
$spec = new CustomRecordSpecification();
$lineStream = FileLineStream::fromString(__DIR__ . '/example.csv');
$csvStream = new ParsedChunkStream($lineStream, $spec);
foreach ($csvStream as $values) {
echo $values[0], "\n";
echo $values[1], "\n";
}
You can run the test with the following command.
composer install
composer test