Esempio n. 1
0
 public function compile(JsCompiler $compiler, \Twig_NodeInterface $node)
 {
     if (!$node instanceof \Twig_Node_Expression_Filter) {
         throw new \RuntimeException(sprintf('$node must be an instanceof of \\Twig_Node_Expression_Filter, but got "%s".', get_class($node)));
     }
     $name = $node->getNode('filter')->getAttribute('value');
     if (false === ($filter = $compiler->getEnvironment()->getFilter($name))) {
         throw new \Twig_Error_Syntax(sprintf('The filter "%s" does not exist', $name), $node->getLine());
     }
     if (($filterCompiler = $compiler->getFilterCompiler($name)) && false !== $filterCompiler->compile($compiler, $node)) {
         return;
     } elseif ($functionName = $compiler->getFilterFunction($name)) {
         $compiler->raw($functionName . '(');
     } else {
         $compiler->raw('this.env_.filter(')->string($name)->raw(', ');
     }
     $compiler->raw($filter->needsEnvironment() ? 'this.env_, ' : '')->raw($filter->needsContext() ? 'context, ' : '')->subcompile($node->getNode('node'));
     foreach ($node->getNode('arguments') as $subNode) {
         $compiler->raw(', ')->subcompile($subNode);
     }
     $compiler->raw(')');
 }