private function TwigFormulaLoader::loadNode

Loads assets from the supplied node.

Return value

array An array of asset formulae indexed by name

1 call to TwigFormulaLoader::loadNode()
TwigFormulaLoader::load in drupal/core/vendor/kriswallsmith/assetic/src/Assetic/Extension/Twig/TwigFormulaLoader.php
Loads formulae from a resource.

File

drupal/core/vendor/kriswallsmith/assetic/src/Assetic/Extension/Twig/TwigFormulaLoader.php, line 48

Class

TwigFormulaLoader
Loads asset formulae from Twig templates.

Namespace

Assetic\Extension\Twig

Code

private function loadNode(\Twig_Node $node) {
  $formulae = array();
  if ($node instanceof AsseticNode) {
    $formulae[$node
      ->getAttribute('name')] = array(
      $node
        ->getAttribute('inputs'),
      $node
        ->getAttribute('filters'),
      array(
        'output' => $node
          ->getAttribute('asset')
          ->getTargetPath(),
        'name' => $node
          ->getAttribute('name'),
        'debug' => $node
          ->getAttribute('debug'),
        'combine' => $node
          ->getAttribute('combine'),
        'vars' => $node
          ->getAttribute('vars'),
      ),
    );
  }
  elseif ($node instanceof \Twig_Node_Expression_Function) {
    $name = version_compare(\Twig_Environment::VERSION, '1.2.0-DEV', '<') ? $node
      ->getNode('name')
      ->getAttribute('name') : $node
      ->getAttribute('name');
    if ($this->twig
      ->getFunction($name) instanceof AsseticFilterFunction) {
      $arguments = array();
      foreach ($node
        ->getNode('arguments') as $argument) {
        $arguments[] = eval('return ' . $this->twig
          ->compile($argument) . ';');
      }
      $invoker = $this->twig
        ->getExtension('assetic')
        ->getFilterInvoker($name);
      $inputs = isset($arguments[0]) ? (array) $arguments[0] : array();
      $filters = $invoker
        ->getFilters();
      $options = array_replace($invoker
        ->getOptions(), isset($arguments[1]) ? $arguments[1] : array());
      if (!isset($options['name'])) {
        $options['name'] = $invoker
          ->getFactory()
          ->generateAssetName($inputs, $filters, $options);
      }
      $formulae[$options['name']] = array(
        $inputs,
        $filters,
        $options,
      );
    }
  }
  foreach ($node as $child) {
    if ($child instanceof \Twig_Node) {
      $formulae += $this
        ->loadNode($child);
    }
  }
  return $formulae;
}