X-Git-Url: https://git.rapsys.eu/packbundle/blobdiff_plain/e574f584030a65cb66c7f3ac3a48e6008ff1465c..3bc9a721a4d6aaa777029a064fb48eb6f568e4e6:/Extension/PackExtension.php?ds=inline diff --git a/Extension/PackExtension.php b/Extension/PackExtension.php index bbf166e..5c89099 100644 --- a/Extension/PackExtension.php +++ b/Extension/PackExtension.php @@ -11,48 +11,51 @@ namespace Rapsys\PackBundle\Extension; -use Symfony\Component\Asset\PackageInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\HttpKernel\Config\FileLocator; -use Twig\Extension\AbstractExtension; +use Psr\Container\ContainerInterface; use Rapsys\PackBundle\Parser\TokenParser; use Rapsys\PackBundle\RapsysPackBundle; use Rapsys\PackBundle\Util\IntlUtil; use Rapsys\PackBundle\Util\SluggerUtil; +use Symfony\Component\Routing\RouterInterface; +use Symfony\Component\HttpKernel\Config\FileLocator; + +use Twig\Extension\AbstractExtension; + /** * {@inheritdoc} */ class PackExtension extends AbstractExtension { /** - * The filters array - */ - protected array $filters; - - /** - * The output array + * Config array */ - protected array $output; + protected array $config; /** - * The token string + * The stream context instance */ - protected string $token; + protected mixed $ctx; /** - * @link https://twig.symfony.com/doc/2.x/advanced.html + * Creates pack extension * * {@inheritdoc} + * + * @link https://twig.symfony.com/doc/2.x/advanced.html + * + * @param ContainerInterface $container The ContainerInterface instance + * @param IntlUtil $intl The IntlUtil instance + * @param FileLocator $locator The FileLocator instance + * @param RouterInterface $router The RouterInterface instance + * @param SluggerUtil $slugger The SluggerUtil instance */ - public function __construct(protected ContainerInterface $container, protected IntlUtil $intl, protected FileLocator $locator, protected PackageInterface $package, protected SluggerUtil $slugger) { - //Retrieve bundle config - if ($parameters = $container->getParameter(RapsysPackBundle::getAlias())) { - //Set filters, output arrays and token string - foreach(['filters', 'output', 'token'] as $k) { - $this->$k = $parameters[$k]; - } - } + public function __construct(protected ContainerInterface $container, protected IntlUtil $intl, protected FileLocator $locator, protected RouterInterface $router, protected SluggerUtil $slugger) { + //Retrieve config + $this->config = $container->getParameter(RapsysPackBundle::getAlias()); + + //Set ctx + $this->ctx = stream_context_create($this->config['context']); } /** @@ -62,9 +65,9 @@ class PackExtension extends AbstractExtension { */ public function getTokenParsers(): array { return [ - new TokenParser($this->locator, $this->package, $this->token, 'stylesheet', $this->output['css'], $this->filters['css']), - new TokenParser($this->locator, $this->package, $this->token, 'javascript', $this->output['js'], $this->filters['js']), - new TokenParser($this->locator, $this->package, $this->token, 'image', $this->output['img'], $this->filters['img']) + new TokenParser($this->container, $this->locator, $this->router, $this->slugger, $this->config, $this->ctx, 'css', 'stylesheet'), + new TokenParser($this->container, $this->locator, $this->router, $this->slugger, $this->config, $this->ctx, 'js', 'javascript'), + new TokenParser($this->container, $this->locator, $this->router, $this->slugger, $this->config, $this->ctx, 'img', 'image') ]; } @@ -75,18 +78,18 @@ class PackExtension extends AbstractExtension { */ public function getFilters(): array { return [ - new \Twig\TwigFilter('lcfirst', 'lcfirst'), - new \Twig\TwigFilter('ucfirst', 'ucfirst'), + new \Twig\TwigFilter('base64_decode', 'base64_decode'), + new \Twig\TwigFilter('base64_encode', 'base64_encode'), + new \Twig\TwigFilter('download', 'file_get_contents', [false, null]), new \Twig\TwigFilter('hash', [$this->slugger, 'hash']), - new \Twig\TwigFilter('unshort', [$this->slugger, 'unshort']), - new \Twig\TwigFilter('short', [$this->slugger, 'short']), - new \Twig\TwigFilter('slug', [$this->slugger, 'slug']), + new \Twig\TwigFilter('intlcurrency', [$this->intl, 'currency']), new \Twig\TwigFilter('intldate', [$this->intl, 'date'], ['needs_environment' => true]), new \Twig\TwigFilter('intlnumber', [$this->intl, 'number']), - new \Twig\TwigFilter('intlcurrency', [$this->intl, 'currency']), - new \Twig\TwigFilter('download', 'file_get_contents', [false, null]), - new \Twig\TwigFilter('base64_encode', 'base64_encode'), - new \Twig\TwigFilter('base64_decode', 'base64_decode') + new \Twig\TwigFilter('lcfirst', 'lcfirst'), + new \Twig\TwigFilter('short', [$this->slugger, 'short']), + new \Twig\TwigFilter('slug', [$this->slugger, 'slug']), + new \Twig\TwigFilter('ucfirst', 'ucfirst'), + new \Twig\TwigFilter('unshort', [$this->slugger, 'unshort']) ]; } }