X-Git-Url: https://git.rapsys.eu/.gitweb.cgi/packbundle/blobdiff_plain/6bc3a323095049fba5ac8bb2b1a2cef1e82b8df5..4ab8e94003e0d50e0b4e9c74c8bd4fb0d45bf7b4:/Extension/PackExtension.php?ds=inline

diff --git a/Extension/PackExtension.php b/Extension/PackExtension.php
index 91a7a89..40863e9 100644
--- a/Extension/PackExtension.php
+++ b/Extension/PackExtension.php
@@ -1,12 +1,28 @@
-<?php
-// src/Rapsys/PackBundle/Twig/PackExtension.php
-namespace Rapsys\PackBundle\Twig;
+<?php declare(strict_types=1);
+
+/*
+ * 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\Extension;
 
-use Symfony\Component\HttpKernel\Config\FileLocator;
-use Symfony\Component\DependencyInjection\ContainerInterface;
 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\SluggerUtil;
+
+/**
+ * {@inheritdoc}
+ */
 class PackExtension extends AbstractExtension {
 	//The config
 	private $config;
@@ -20,18 +36,29 @@ class PackExtension extends AbstractExtension {
 	//The file locator
 	protected $locator;
 
+	//The slugger instance
+	protected $slugger;
+
 	//The assets package
 	protected $package;
 
-	public function __construct(FileLocator $locator, ContainerInterface $container, PackageInterface $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())) {
+		if ($parameters = $container->getParameter(self::getAlias())) {
 			//Set config, output and filters arrays
 			foreach(['config', 'output', 'filters'] as $k) {
 				$this->$k = $parameters[$k];
@@ -39,18 +66,36 @@ class PackExtension extends AbstractExtension {
 		}
 	}
 
-	public function getTokenParsers() {
+	/**
+	 * Returns a list of filters 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'])
+		];
+	}
+
+	/**
+	 * Returns a list of filters to add to the existing list.
+	 *
+	 * @return \Twig\TwigFilter[]
+	 */
+	public function getFilters(): array {
 		return [
-			new PackTokenParser($this->locator, $this->package, $this->config, 'stylesheet', $this->output['css'], $this->filters['css']),
-			new PackTokenParser($this->locator, $this->package, $this->config, 'javascript', $this->output['js'], $this->filters['js']),
-			new PackTokenParser($this->locator, $this->package, $this->config, 'image', $this->output['img'], $this->filters['img'])
+			new \Twig\TwigFilter('hash', [$this->slugger, 'hash']),
+			new \Twig\TwigFilter('unshort', [$this->slugger, 'unshort']),
+			new \Twig\TwigFilter('short', [$this->slugger, 'short'])
 		];
 	}
 
 	/**
 	 * {@inheritdoc}
 	 */
-	public function getAlias() {
-		return 'rapsys_pack';
+	public function getAlias(): string {
+		return RapsysPackBundle::getAlias();
 	}
 }