-<?php
+<?php declare(strict_types=1);
-namespace Rapsys\PackBundle\Twig\Filter;
+/*
+ * This file is part of the Rapsys PackBundle package.
+ *
+ * (c) Raphaël Gertz <symfony@rapsys.eu>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Rapsys\PackBundle\Filter;
-use Rapsys\PackBundle\Twig\Filter\FilterInterface;
use Twig\Error\Error;
+use Twig\Source;
+/**
+ * {@inheritdoc}
+ */
class CPackFilter implements FilterInterface {
- //Default bin
- private $bin;
-
- //Default compress type
- private $compress;
-
- //Twig template filename
- private $fileName;
-
- //Twig template line
- private $line;
-
- //Configure the object
- //XXX: compress can be minify or pretty
- public function __construct($fileName, $line, $bin = 'cpack', $compress = 'minify') {
- //Set fileName
- $this->fileName = $fileName;
-
- //Set line
- $this->line = $line;
-
- //Set bin
- $this->bin = $bin;
-
- //Set compress
- $this->compress = $compress;
-
+ /**
+ * Setup cpack filter
+ *
+ * @xxx compress can be minify or pretty
+ */
+ public function __construct(protected Source $fileName, protected int $line, protected string $bin = 'cpack', protected string $compress = 'minify') {
//Deal with compress
if (!empty($this->compress)) {
//Append minify parameter
if ($this->compress == 'minify') {
+ //TODO: protect binary call by converting bin to array ?
$this->bin .= ' --minify';
//Unknown compress type
//XXX: default compression is pretty
}
}
- public function process($content) {
+ /**
+ * {@inheritdoc}
+ */
+ public function process(string $content): string {
//Create descriptors
$descriptorSpec = array(
0 => array('pipe', 'r'),
//Open process
if (is_resource($proc = proc_open($this->bin, $descriptorSpec, $pipes))) {
//Set stderr as non blocking
- stream_set_blocking($pipes[2], 0);
+ stream_set_blocking($pipes[2], false);
//Send content to stdin
fwrite($pipes[0], $content);