diff options
Diffstat (limited to 'public/system/library/template/Twig/Node/Expression/MethodCall.php')
-rw-r--r-- | public/system/library/template/Twig/Node/Expression/MethodCall.php | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/public/system/library/template/Twig/Node/Expression/MethodCall.php b/public/system/library/template/Twig/Node/Expression/MethodCall.php new file mode 100644 index 0000000..620b02b --- /dev/null +++ b/public/system/library/template/Twig/Node/Expression/MethodCall.php @@ -0,0 +1,41 @@ +<?php + +/* + * This file is part of Twig. + * + * (c) 2012 Fabien Potencier + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +class Twig_Node_Expression_MethodCall extends Twig_Node_Expression +{ + public function __construct(Twig_Node_Expression $node, $method, Twig_Node_Expression_Array $arguments, $lineno) + { + parent::__construct(array('node' => $node, 'arguments' => $arguments), array('method' => $method, 'safe' => false), $lineno); + + if ($node instanceof Twig_Node_Expression_Name) { + $node->setAttribute('always_defined', true); + } + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->subcompile($this->getNode('node')) + ->raw('->') + ->raw($this->getAttribute('method')) + ->raw('(') + ; + $first = true; + foreach ($this->getNode('arguments')->getKeyValuePairs() as $pair) { + if (!$first) { + $compiler->raw(', '); + } + $first = false; + + $compiler->subcompile($pair['value']); + } + $compiler->raw(')'); + } +} |