*/ 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:----U4yR7zxwqXcEbNw1m786GUBD91cA1OWFESc5DWYYxKMw0u7wwq/m9x/rfuAAFJZM/SqLAiolMp3vVj0MB/Z7JLbpVPEHmYAFaLFOtBg6aMFsd0wmAW7c96zcCHBVpL+5HtxZ2HRzOAXsDorPPBHp8+lNhDZIpHkds8SodOdzPjPLRiWOhr9oo8H3c9C7rtP3mVNxG9Mli9+F5EfG/ZAMdrXaDLHcFD8rWNhNti6VNve8M5PI16Ng3q65+te+//RgxameP7bHq/vSDgyNqkDyR41v1ERgb4h60rkDCmicr9Sv/mA9I6+GyL/e2Vk1F2BtHiQmHZikZkKmikL8kS+puQq5YSm+NyOAwwF8NCloTEDrGj+VA/+iDlqbbb8eI+GTagf7+EdROkvEIj3dw8k0KIJ7ChHI/gTNO9AN/0pLPLb5f+un4usPOi4fWMv+D+fPongWo4uYH0TstvqQuuP7zQH2kdwLrR7hzLl5VNfadgtQLZg2/2+zYOBO881jo4CLSAE0C0439dLOZHJY6ZF7KAWVmgv0UDquQ8Hymfa82z5mI26odAZdo5NN+wlcczs64xLiDn0lkkk+jtKHJeh6yEAKc5dm92QRi4PO1ILAdbM9rJp0AF18xdm0U/jHaerZoJx3uSYtGLjovGjP3w9SxWgc/DCyv5RhYxk1a9iKfnw=----ATTACHMENT:----NDcyMjA2NjQ2MzQ3NDI1NyAzMjAzMDg4MTY2MDU3NTQ3IDc5MjY5NTI4NTc4OTM3Mjg=