From 7a884a8cd503031c762e830044dbfce09aeddf5e Mon Sep 17 00:00:00 2001
From: =?utf8?q?Rapha=C3=ABl=20Gertz?= <git@rapsys.eu>
Date: Sun, 8 Dec 2024 06:35:12 +0100
Subject: [PATCH] Add config and ctx member variables Drop intl size filter
 Drop package parameter Add container parameter Clean token parser arguments
 Cleanup

---
 Extension/PackExtension.php | 36 ++++++++++++++++++++++++++++++------
 1 file changed, 30 insertions(+), 6 deletions(-)

diff --git a/Extension/PackExtension.php b/Extension/PackExtension.php
index aa11688..5c89099 100644
--- a/Extension/PackExtension.php
+++ b/Extension/PackExtension.php
@@ -11,12 +11,14 @@
 
 namespace Rapsys\PackBundle\Extension;
 
+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\Asset\PackageInterface;
+use Symfony\Component\Routing\RouterInterface;
 use Symfony\Component\HttpKernel\Config\FileLocator;
 
 use Twig\Extension\AbstractExtension;
@@ -26,11 +28,34 @@ use Twig\Extension\AbstractExtension;
  */
 class PackExtension extends AbstractExtension {
 	/**
+	 * Config array
+	 */
+	protected array $config;
+
+	/**
+	 * The stream context instance
+	 */
+	protected mixed $ctx;
+
+	/**
+	 * 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 IntlUtil $intl, protected FileLocator $locator, protected PackageInterface $package, protected SluggerUtil $slugger, protected array $parameters) {
+	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']);
 	}
 
 	/**
@@ -40,9 +65,9 @@ class PackExtension extends AbstractExtension {
 	 */
 	public function getTokenParsers(): array {
 		return [
-			new TokenParser($this->locator, $this->package, $this->parameters['token'], 'stylesheet', $this->parameters['output']['css'], $this->parameters['filters']['css']),
-			new TokenParser($this->locator, $this->package, $this->parameters['token'], 'javascript', $this->parameters['output']['js'], $this->parameters['filters']['js']),
-			new TokenParser($this->locator, $this->package, $this->parameters['token'], 'image', $this->parameters['output']['img'], $this->parameters['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')
 		];
 	}
 
@@ -60,7 +85,6 @@ class PackExtension extends AbstractExtension {
 			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('intlsize', [$this->intl, 'size']),
 			new \Twig\TwigFilter('lcfirst', 'lcfirst'),
 			new \Twig\TwigFilter('short', [$this->slugger, 'short']),
 			new \Twig\TwigFilter('slug', [$this->slugger, 'slug']),
-- 
2.41.3