fileLocator = $fileLocator; //Set container interface $this->containerInterface = $containerInterface; //Set assets packages $this->assetsPackages = $assetsPackages; //Set default prefix //XXX: require symfony 3.3 $this->prefix = $this->containerInterface->getParameter('kernel.project_dir').'/web/'; //Set default coutput $this->coutput = 'css/*.pack.css'; //Set default joutput $this->joutput = 'js/*.pack.js'; //Set default ioutput $this->ioutput = 'img/*.pack.jpg'; //Set default cfilter $this->cfilter = array('CPackFilter'); //Set default jfilter $this->jfilter = array('JPackFilter'); //Set default ifilter $this->ifilter = array('IPackFilter'); //Load configuration if ($containerInterface->hasParameter('rapsys_pack')) { if ($parameters = $containerInterface->getParameter('rapsys_pack')) { foreach($parameters as $k => $v) { if (isset($this->$k) && !empty($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->assetsPackages, $this->prefix, 'stylesheet', $this->coutput, $this->cfilter), new PackTokenParser($this->fileLocator, $this->containerInterface, $this->assetsPackages, $this->prefix, 'javascript', $this->joutput, $this->jfilter), new PackTokenParser($this->fileLocator, $this->containerInterface, $this->assetsPackages, $this->prefix, 'image', $this->ioutput, $this->ifilter) ); } public function getFilters() { return array( new TwigFilter( 'bb2html', function($text) { $ctx = bbcode_create( array( '' => array('type' => BBCODE_TYPE_ROOT), 'code' => array( 'type' => BBCODE_TYPE_OPTARG, 'open_tag' => '
', 'close_tag' => '', 'default_arg' => '{CONTENT}' ), 'ul' => array( 'type' => BBCODE_TYPE_NOARG, 'open_tag' => '
]*\>(.*?)\#s', $text, $matches) && !empty($matches[1])) { foreach($matches[1] as $string) { $text = str_replace($string, str_replace('
(
(\r?\n?))*#', '#(
(\r?\n?))*
\2', '
\2
', '
\2'), $text ); return $text; }, array('is_safe' => array('html')) ) ); } }