X-Git-Url: https://git.rapsys.eu/packbundle/blobdiff_plain/ce6527636cb2bc6b7d72253255561d3fd5eee39c..ba4cac691e8a7a3dd193680ee2414b6aac0c1088:/Twig/PackExtension.php?ds=sidebyside diff --git a/Twig/PackExtension.php b/Twig/PackExtension.php index e441a47..91a7a89 100644 --- a/Twig/PackExtension.php +++ b/Twig/PackExtension.php @@ -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 { - 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')) { - if ($parameters = $containerInterface->getParameter('rapsys_pack')) { - foreach($parameters 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'; } }