X-Git-Url: https://git.rapsys.eu/packbundle/blobdiff_plain/6bc3a323095049fba5ac8bb2b1a2cef1e82b8df5..177b09c72785e869d93602ac47524a31dd64a94b:/Extension/PackExtension.php diff --git a/Extension/PackExtension.php b/Extension/PackExtension.php index 91a7a89..1234de5 100644 --- a/Extension/PackExtension.php +++ b/Extension/PackExtension.php @@ -1,56 +1,70 @@ - + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ - //The output - private $output; +namespace Rapsys\PackBundle\Extension; - //The filter - private $filters; - - //The file locator - protected $locator; - - //The assets package - protected $package; +use Symfony\Component\Asset\PackageInterface; +use Symfony\Component\HttpKernel\Config\FileLocator; - public function __construct(FileLocator $locator, ContainerInterface $container, PackageInterface $package) { - //Set file locator - $this->locator = $locator; +use Twig\Extension\AbstractExtension; - //Set assets packages - $this->package = $package; +use Rapsys\PackBundle\Parser\TokenParser; +use Rapsys\PackBundle\RapsysPackBundle; +use Rapsys\PackBundle\Util\IntlUtil; +use Rapsys\PackBundle\Util\SluggerUtil; - //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]; - } - } +/** + * {@inheritdoc} + */ +class PackExtension extends AbstractExtension { + /** + * {@inheritdoc} + * + * @link https://twig.symfony.com/doc/2.x/advanced.html + */ + public function __construct(protected IntlUtil $intl, protected FileLocator $locator, protected PackageInterface $package, protected SluggerUtil $slugger, protected array $parameters) { } - public function getTokenParsers() { + /** + * Returns a filter array to add to the existing list. + * + * @return \Twig\TwigFilter[] + */ + public function getTokenParsers(): array { 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']) + new TokenParser($this->locator, $this->package, $this->parameters['token'], 'stylesheet', $this->parameters['output']['css'], $this->parameters['filters']['css']), + new TokenParser($this->locator, $this->package, $this->parameters['token'], 'javascript', $this->parameters['output']['js'], $this->parameters['filters']['js']), + new TokenParser($this->locator, $this->package, $this->parameters['token'], 'image', $this->parameters['output']['img'], $this->parameters['filters']['img']) ]; } /** - * {@inheritdoc} + * Returns a filter array to add to the existing list. + * + * @return \Twig\TwigFilter[] */ - public function getAlias() { - return 'rapsys_pack'; + public function getFilters(): array { + return [ + new \Twig\TwigFilter('lcfirst', 'lcfirst'), + new \Twig\TwigFilter('ucfirst', 'ucfirst'), + new \Twig\TwigFilter('hash', [$this->slugger, 'hash']), + new \Twig\TwigFilter('unshort', [$this->slugger, 'unshort']), + new \Twig\TwigFilter('short', [$this->slugger, 'short']), + new \Twig\TwigFilter('slug', [$this->slugger, 'slug']), + new \Twig\TwigFilter('intldate', [$this->intl, 'date'], ['needs_environment' => true]), + new \Twig\TwigFilter('intlnumber', [$this->intl, 'number']), + new \Twig\TwigFilter('intlcurrency', [$this->intl, 'currency']), + new \Twig\TwigFilter('download', 'file_get_contents', [false, null]), + new \Twig\TwigFilter('base64_encode', 'base64_encode'), + new \Twig\TwigFilter('base64_decode', 'base64_decode') + ]; } }