]> Raphaƫl G. Git Repositories - packbundle/blobdiff - Extension/PackExtension.php
Version 0.2.0
[packbundle] / Extension / PackExtension.php
diff --git a/Extension/PackExtension.php b/Extension/PackExtension.php
new file mode 100644 (file)
index 0000000..91a7a89
--- /dev/null
@@ -0,0 +1,56 @@
+<?php
+// src/Rapsys/PackBundle/Twig/PackExtension.php
+namespace Rapsys\PackBundle\Twig;
+
+use Symfony\Component\HttpKernel\Config\FileLocator;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\Asset\PackageInterface;
+use Twig\Extension\AbstractExtension;
+
+class PackExtension extends AbstractExtension {
+       //The config
+       private $config;
+
+       //The output
+       private $output;
+
+       //The filter
+       private $filters;
+
+       //The file locator
+       protected $locator;
+
+       //The assets package
+       protected $package;
+
+       public function __construct(FileLocator $locator, ContainerInterface $container, PackageInterface $package) {
+               //Set file locator
+               $this->locator = $locator;
+
+               //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 getTokenParsers() {
+               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'])
+               ];
+       }
+
+       /**
+        * {@inheritdoc}
+        */
+       public function getAlias() {
+               return 'rapsys_pack';
+       }
+}