]> Raphaƫl G. Git Repositories - packbundle/blobdiff - Twig/PackExtension.php
Add css, img and js public resources subdirectories
[packbundle] / Twig / PackExtension.php
index 3b4aa072fa90711abc2114376207ba527e1f0f37..91a7a897907ee9ae529fbf3fe32b7199eb707a5b 100644 (file)
@@ -4,47 +4,53 @@ 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 \Twig_Extension {
-       #, $prefix = '@RapsysPackBundle/Resources/public/', $cpack = '/usr/local/bin/cpack', $jpack = '/usr/local/bin/jpack'
-       #$this->kernel = $kernel;
-       public function __construct(FileLocator $fileLocator, ContainerInterface $containerInterface) {
+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->fileLocator = $fileLocator;
-               //Set container interface
-               $this->containerInterface = $containerInterface;
-
-               //Set default prefix
-               $this->prefix = '@RapsysPackBundle/Resources/public/';
-
-               //Set default coutput
-               $this->coutput = 'css/*.pack.css';
-               //Set default joutput
-               $this->joutput = 'js/*.pack.js';
-
-               //Set default cpack
-               $this->cpack = '/usr/local/bin/cpack';
-               //Set default jpack
-               $this->jpack = '/usr/local/bin/jpack';
-
-               //Load configuration
-               if ($containerInterface->hasParameter('rapsys_pack')) {
-                       foreach($containerInterface->getParameter('rapsys_pack') as $k => $v) {
-                               if (isset($this->$k)) {
-                                       $this->$k = $v;
-                               }
+               $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];
                        }
                }
-
-               //Fix prefix
-               $this->prefix = $this->fileLocator->locate($this->prefix);
        }
 
        public function getTokenParsers() {
-               return array(
-                       new PackTokenParser($this->fileLocator, $this->containerInterface, $this->prefix, 'stylesheets', $this->coutput, $this->cpack),
-                       new PackTokenParser($this->fileLocator, $this->containerInterface, $this->prefix, 'javascripts', $this->joutput, $this->jpack),
-                       #new PackTokenParser($this->fileLocator, $this->containerInterface, $this->prefix, 'image', '*.pack.{tld}'),
-               );
+               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';
        }
 }