infrastructure/Assetic/Twig/AsseticExtension.php line 63

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4. * This file is part of the Symfony framework.
  5. *
  6. * (c) Fabien Potencier <fabien@symfony.com>
  7. *
  8. * This source file is subject to the MIT license that is bundled
  9. * with this source code in the file LICENSE.
  10. */
  11. namespace Symfony\Bundle\AsseticBundle\Twig;
  12. use Assetic\Extension\Twig\AsseticExtension as BaseAsseticExtension;
  13. use Assetic\Factory\AssetFactory;
  14. use Assetic\ValueSupplierInterface;
  15. use Symfony\Component\Templating\TemplateNameParserInterface;
  16. /**
  17. * Assetic extension.
  18. *
  19. * @author Kris Wallsmith <kris@symfony.com>
  20. */
  21. class AsseticExtension extends BaseAsseticExtension
  22. {
  23. private $useController;
  24. private readonly TemplateNameParserInterface $templateNameParser;
  25. private $enabledBundles;
  26. public function __construct(AssetFactory $factory, TemplateNameParserInterface $templateNameParser, $useController = false, $functions = [], $enabledBundles = [], ValueSupplierInterface $valueSupplier = null)
  27. {
  28. parent::__construct($factory, $functions, $valueSupplier);
  29. $this->useController = $useController;
  30. $this->templateNameParser = $templateNameParser;
  31. $this->enabledBundles = $enabledBundles;
  32. }
  33. #[\Override]
  34. public function getTokenParsers(): array
  35. {
  36. return [
  37. $this->createTokenParser('javascripts', 'js/*.js'),
  38. $this->createTokenParser('stylesheets', 'css/*.css'),
  39. $this->createTokenParser('image', 'images/*', true),
  40. ];
  41. }
  42. #[\Override]
  43. public function getNodeVisitors(): array
  44. {
  45. return [
  46. new AsseticNodeVisitor($this->templateNameParser, $this->enabledBundles),
  47. ];
  48. }
  49. #[\Override]
  50. public function getGlobals(): array
  51. {
  52. $globals = parent::getGlobals();
  53. $globals['assetic']['use_controller'] = $this->useController;
  54. return $globals;
  55. }
  56. private function createTokenParser($tag, $output, $single = false)
  57. {
  58. $tokenParser = new AsseticTokenParser($this->factory, $tag, $output, $single, ['package']);
  59. $tokenParser->setTemplateNameParser($this->templateNameParser);
  60. $tokenParser->setEnabledBundles($this->enabledBundles);
  61. return $tokenParser;
  62. }
  63. }