X-Git-Url: https://git.rapsys.eu/packbundle/blobdiff_plain/ce4ef48d51a312fa5f854e91f3825a699d9325e8..006fbe00540929765d3d53bed7b069506c6d6e0a:/Extension/PackExtension.php

diff --git a/Extension/PackExtension.php b/Extension/PackExtension.php
index 48f93cd..97e3467 100644
--- a/Extension/PackExtension.php
+++ b/Extension/PackExtension.php
@@ -12,90 +12,59 @@
 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 Rapsys\PackBundle\Parser\TokenParser;
 use Rapsys\PackBundle\RapsysPackBundle;
+use Rapsys\PackBundle\Util\IntlUtil;
 use Rapsys\PackBundle\Util\SluggerUtil;
 
 /**
  * {@inheritdoc}
  */
 class PackExtension extends AbstractExtension {
-	//The config
-	private $config;
-
-	//The output
-	private $output;
-
-	//The filter
-	private $filters;
-
-	//The file locator
-	protected $locator;
-
-	//The slugger instance
-	protected $slugger;
-
-	//The assets package
-	protected $package;
-
 	/**
 	 * @link https://twig.symfony.com/doc/2.x/advanced.html
 	 *
 	 * {@inheritdoc}
 	 */
-	public function __construct(FileLocator $locator, ContainerInterface $container, PackageInterface $package, SluggerUtil $slugger) {
-		//Set file locator
-		$this->locator = $locator;
-
-		//Set slugger
-		$this->slugger = $slugger;
-
-		//Set assets packages
-		$this->package = $package;
-
-		//Retrieve bundle config
-		if ($parameters = $container->getParameter($this->getAlias())) {
-			//Set config, output and filters arrays
-			foreach(['config', 'output', 'filters'] as $k) {
-				$this->$k = $parameters[$k];
-			}
-		}
+	public function __construct(protected IntlUtil $intl, protected FileLocator $locator, protected PackageInterface $package, protected SluggerUtil $slugger, protected array $parameters) {
 	}
 
 	/**
-	 * Returns a list of filters to add to the existing list.
+	 * Returns a filter array to add to the existing list.
 	 *
 	 * @return \Twig\TwigFilter[]
 	 */
 	public function getTokenParsers(): array {
 		return [
-			new TokenParser($this->locator, $this->package, $this->config, 'stylesheet', $this->output['css'], $this->filters['css']),
-			new TokenParser($this->locator, $this->package, $this->config, 'javascript', $this->output['js'], $this->filters['js']),
-			new TokenParser($this->locator, $this->package, $this->config, 'image', $this->output['img'], $this->filters['img'])
+			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'])
 		];
 	}
 
 	/**
-	 * Returns a list of filters to add to the existing list.
+	 * Returns a filter array to add to the existing list.
 	 *
 	 * @return \Twig\TwigFilter[]
 	 */
 	public function getFilters(): array {
 		return [
+			new \Twig\TwigFilter('lcfirst', 'lcfirst'),
+			new \Twig\TwigFilter('ucfirst', 'ucfirst'),
 			new \Twig\TwigFilter('hash', [$this->slugger, 'hash']),
 			new \Twig\TwigFilter('unshort', [$this->slugger, 'unshort']),
-			new \Twig\TwigFilter('short', [$this->slugger, 'short'])
+			new \Twig\TwigFilter('short', [$this->slugger, 'short']),
+			new \Twig\TwigFilter('slug', [$this->slugger, 'slug']),
+			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')
 		];
 	}
-
-	/**
-	 * {@inheritdoc}
-	 */
-	public function getAlias(): string {
-		return RapsysPackBundle::getAlias();
-	}
 }