namespace Rapsys\PackBundle\Extension;
-use Symfony\Component\Asset\PackageInterface;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\HttpKernel\Config\FileLocator;
-use Twig\Extension\AbstractExtension;
+use Psr\Container\ContainerInterface;
use Rapsys\PackBundle\Parser\TokenParser;
use Rapsys\PackBundle\RapsysPackBundle;
use Rapsys\PackBundle\Util\IntlUtil;
use Rapsys\PackBundle\Util\SluggerUtil;
+use Symfony\Component\Routing\RouterInterface;
+use Symfony\Component\HttpKernel\Config\FileLocator;
+
+use Twig\Extension\AbstractExtension;
+
/**
* {@inheritdoc}
*/
class PackExtension extends AbstractExtension {
/**
- * @link https://twig.symfony.com/doc/2.x/advanced.html
+ * Config array
+ */
+ protected array $config;
+
+ /**
+ * The stream context instance
+ */
+ protected mixed $ctx;
+
+ /**
+ * Creates pack extension
*
* {@inheritdoc}
+ *
+ * @link https://twig.symfony.com/doc/2.x/advanced.html
+ *
+ * @param ContainerInterface $container The ContainerInterface instance
+ * @param IntlUtil $intl The IntlUtil instance
+ * @param FileLocator $locator The FileLocator instance
+ * @param RouterInterface $router The RouterInterface instance
+ * @param SluggerUtil $slugger The SluggerUtil instance
*/
- public function __construct(protected ContainerInterface $container, protected IntlUtil $intl, protected FileLocator $locator, protected PackageInterface $package, protected SluggerUtil $slugger, protected array $parameters) {
+ public function __construct(protected ContainerInterface $container, protected IntlUtil $intl, protected FileLocator $locator, protected RouterInterface $router, protected SluggerUtil $slugger) {
+ //Retrieve config
+ $this->config = $container->getParameter(RapsysPackBundle::getAlias());
+
+ //Set ctx
+ $this->ctx = stream_context_create($this->config['context']);
}
/**
*/
public function getTokenParsers(): array {
return [
- 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'])
+ new TokenParser($this->container, $this->locator, $this->router, $this->slugger, $this->config, $this->ctx, 'css', 'stylesheet'),
+ new TokenParser($this->container, $this->locator, $this->router, $this->slugger, $this->config, $this->ctx, 'js', 'javascript'),
+ new TokenParser($this->container, $this->locator, $this->router, $this->slugger, $this->config, $this->ctx, 'img', 'image')
];
}
*/
public function getFilters(): array {
return [
- new \Twig\TwigFilter('lcfirst', 'lcfirst'),
- new \Twig\TwigFilter('ucfirst', 'ucfirst'),
+ new \Twig\TwigFilter('base64_decode', 'base64_decode'),
+ new \Twig\TwigFilter('base64_encode', 'base64_encode'),
+ new \Twig\TwigFilter('download', 'file_get_contents', [false, null]),
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('intlcurrency', [$this->intl, 'currency']),
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')
+ new \Twig\TwigFilter('lcfirst', 'lcfirst'),
+ new \Twig\TwigFilter('short', [$this->slugger, 'short']),
+ new \Twig\TwigFilter('slug', [$this->slugger, 'slug']),
+ new \Twig\TwigFilter('ucfirst', 'ucfirst'),
+ new \Twig\TwigFilter('unshort', [$this->slugger, 'unshort'])
];
}
}