use Symfony\Component\HttpKernel\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\Asset\Packages;
class PackExtension extends \Twig_Extension {
- public function __construct(FileLocator $fileLocator, ContainerInterface $containerInterface) {
+ //The config
+ private $config;
+
+ //The output
+ private $output;
+
+ //The filter
+ private $filters;
+
+ public function __construct(FileLocator $fileLocator, ContainerInterface $containerInterface, Packages $assetsPackages) {
//Set file locator
$this->fileLocator = $fileLocator;
//Set container interface
$this->containerInterface = $containerInterface;
+ //Set assets packages
+ $this->assetsPackages = $assetsPackages;
- //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;
- }
- }
+ //Retrieve bundle config
+ if ($parameters = $containerInterface->getParameter($this->getAlias())) {
+ foreach($parameters as $k => $v) {
+ $this->$k = $v;
}
}
-
- //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}'),
+ new PackTokenParser($this->fileLocator, $this->assetsPackages, $this->config, 'stylesheet', $this->output['css'], $this->filters['css']),
+ new PackTokenParser($this->fileLocator, $this->assetsPackages, $this->config, 'javascript', $this->output['js'], $this->filters['js']),
+ new PackTokenParser($this->fileLocator, $this->assetsPackages, $this->config, 'image', $this->output['img'], $this->filters['img'])
);
}
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getAlias() {
+ return 'rapsys_pack';
+ }
}