X-Git-Url: https://git.rapsys.eu/packbundle/blobdiff_plain/6bc3a323095049fba5ac8bb2b1a2cef1e82b8df5..4ab8e94003e0d50e0b4e9c74c8bd4fb0d45bf7b4:/Extension/PackExtension.php 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 @@ - + * + * 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(); } }