vendor/assetic/framework/src/Assetic/Extension/Twig/AsseticExtension.php line 50

Open in your IDE?
  1. <?php
  2. namespace Assetic\Extension\Twig;
  3. use Assetic\Factory\AssetFactory;
  4. use Assetic\Contracts\ValueSupplierInterface;
  5. use Twig\Extension\AbstractExtension;
  6. use Twig\Extension\GlobalsInterface;
  7. class AsseticExtension extends AbstractExtension implements GlobalsInterface
  8. {
  9. protected $factory;
  10. protected $functions;
  11. protected $valueSupplier;
  12. public function __construct(AssetFactory $factory, $functions = [], ?ValueSupplierInterface $valueSupplier = null)
  13. {
  14. $this->factory = $factory;
  15. $this->functions = [];
  16. $this->valueSupplier = $valueSupplier;
  17. foreach ($functions as $function => $options) {
  18. if (is_integer($function) && is_string($options)) {
  19. $this->functions[$options] = array('filter' => $options);
  20. } else {
  21. $this->functions[$function] = $options + array('filter' => $function);
  22. }
  23. }
  24. }
  25. public function getTokenParsers()
  26. {
  27. return array(
  28. new AsseticTokenParser($this->factory, 'javascripts', 'js/*.js'),
  29. new AsseticTokenParser($this->factory, 'stylesheets', 'css/*.css'),
  30. new AsseticTokenParser($this->factory, 'image', 'images/*', true),
  31. );
  32. }
  33. public function getFunctions()
  34. {
  35. $functions = [];
  36. foreach ($this->functions as $function => $filter) {
  37. $functions[] = AsseticFilterFunction::make($this, $function);
  38. }
  39. return $functions;
  40. }
  41. public function getGlobals(): array
  42. {
  43. return array(
  44. 'assetic' => array(
  45. 'debug' => $this->factory->isDebug(),
  46. 'vars' => null !== $this->valueSupplier ? new ValueContainer($this->valueSupplier) : [],
  47. ),
  48. );
  49. }
  50. public function getFilterInvoker($function)
  51. {
  52. return new AsseticFilterInvoker($this->factory, $this->functions[$function]);
  53. }
  54. public function getName()
  55. {
  56. return 'assetic';
  57. }
  58. }