hhpack / file
File utility library for Hack
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Language:Hack
Requires
- hhvm: >= 3.21.0
- hhvm/hhvm-autoload: ^1.5
Requires (Dev)
- hackpack/hackunit: ^1.1
README
This package is a library for performing a simple to file operations hacklang.
Will provide a lightweight and simple api to the user.
Basic usage
Read processing of files can be realized by a simple code as follows.
Reading one line at a time.
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 };
Read the CSV file
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"; }
Customizing the reading of the record
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"; }
Run the test
You can run the test with the following command.
composer install
composer test