public createCollection ( Psr\Log\LoggerInterface $logger, string $buildFolder, string | null $file = null, array $fields = [], string $format = self::OUTPUT_FORMAT_PHP ) : |
||
$logger | Psr\Log\LoggerInterface | |
$buildFolder | string | |
$file | string | null | |
$fields | array | |
$format | string | |
return |
public function createCollection(LoggerInterface $logger, $buildFolder, $file = null, $fields = [], $format = self::OUTPUT_FORMAT_PHP)
{
$writerCollection = new WriterCollection();
if (null === $file) {
switch ($format) {
case self::OUTPUT_FORMAT_ASP:
$file = $buildFolder . '/full_browscap.ini';
break;
case self::OUTPUT_FORMAT_CSV:
$file = $buildFolder . '/browscap.csv';
break;
case self::OUTPUT_FORMAT_XML:
$file = $buildFolder . '/browscap.xml';
break;
case self::OUTPUT_FORMAT_JSON:
$file = $buildFolder . '/browscap.json';
break;
case self::OUTPUT_FORMAT_PHP:
default:
$file = $buildFolder . '/full_php_browscap.ini';
break;
}
}
$filter = new CustomFilter($fields);
switch ($format) {
case self::OUTPUT_FORMAT_ASP:
$writer = new Writer\IniWriter($file);
$formatter = new Formatter\AspFormatter();
break;
case self::OUTPUT_FORMAT_CSV:
$writer = new Writer\CsvWriter($file);
$formatter = new Formatter\CsvFormatter();
break;
case self::OUTPUT_FORMAT_XML:
$writer = new Writer\XmlWriter($file);
$formatter = new Formatter\XmlFormatter();
break;
case self::OUTPUT_FORMAT_JSON:
$writer = new Writer\JsonWriter($file);
$formatter = new Formatter\JsonFormatter();
break;
case self::OUTPUT_FORMAT_PHP:
default:
$writer = new Writer\IniWriter($file);
$formatter = new Formatter\PhpFormatter();
break;
}
$writer->setLogger($logger)->setFormatter($formatter->setFilter($filter))->setFilter($filter);
$writerCollection->addWriter($writer);
return $writerCollection;
}
/** * runs before the build * * @param array $fields * @param string|null $file * @param string $format * * @return \Browscap\Generator\BuildCustomFileGenerator */ protected function preBuild($fields = [], $file = null, $format = self::OUTPUT_FORMAT_PHP) { parent::preBuild(); $this->getLogger()->info('started creating the custom output file'); if (null === $this->collectionCreator) { $this->setCollectionCreator(new CollectionCreator()); } if (null === $this->writerCollection) { $factory = new Writer\Factory\CustomWriterFactory(); $this->setWriterCollection($factory->createCollection($this->getLogger(), $this->buildFolder, $file, $fields, $format)); } return $this; }