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(')'); }