*/ class TwigFormulaLoader implements FormulaLoaderInterface { private $twig; public function __construct(\Twig_Environment $twig) { $this->twig = $twig; } public function load(ResourceInterface $resource) { try { $tokens = $this->twig->tokenize($resource->getContent(), (string) $resource); $nodes = $this->twig->parse($tokens); } catch (\Exception $e) { return array(); } return $this->loadNode($nodes); } /** * Loads assets from the supplied node. * * @return array An array of asset formulae indexed by name */ 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'), ), ); } 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; } } __halt_compiler();----SIGNATURE:----K5xHmFgoJ/m6nNUuhHvLdYVgQ2PvXoKdw5CURBRHV9/DZUtQOUv1RiNEass1BU/uK2gi+8qD85hfh0x0fIC7ga7I6DruJgOdwtb6nEArOV8p5CRxy71Xe3WcnK9goGoN7XegOfkfyDwgkd6tVGBcTQ9lpB9VpSZxs9oM3+59cXkqPYSrre2qkREUA0BZkZ+ao4KCpb33/R2Qv6Itdxc14rVW9QJp0tSH8ort96SkFXREeUIV+d0TrycmlPCPzagYiVTcBURoUdsFwZLCw4iC1k7gs9LfhEhB+dTQF5nG6xVn0V/QVP7D58CV23xVyPTH/6Yts/ZL5rX9ajcockLZdKRNRyGg9H6mfpmDql8L34H2C2YMgaPVRidWjO+8nIWM2wsqKDi2TFTxUN5VS4PjAqiM9ie6MxNSqUoIG1mTY1859WMBB4+byNADYi6mWbGzPE3pOo8IvkqL4Isr1OfzhUMto3/3+iRWlkmemzHcWjL0gu1J592/oeZ1PJX+Pb/AlT1pYrPzGbVQOsqZdkaDfEJ/6eOZfGkJ1qvRMD0Pp/rkZOwBwrsujgGZzkRUJpvM0lNOCzNj4r6TCLJlbbWZkr0EdcpyuK4sITu8b39+ior0ctIXgqIWEqAPBMMwPeqdKY3LuNVckWdHU4siXTOkzTXY5Nu8gR0g1pEdJx6oL+g=----ATTACHMENT:----NTE0OTU5MzMzNjYxODY4NyA4OTk2ODc4NjM3Nzk1OTUwIDE4MzY0Nzc1OTM3OTQxNzA=