public function Twig_Node_Expression_Test::compile

Compiles the node to PHP.

Parameters

Twig_Compiler A Twig_Compiler instance:

Overrides Twig_Node::compile

7 methods override Twig_Node_Expression_Test::compile()
Twig_Node_Expression_Test_Constant::compile in drupal/core/vendor/twig/twig/lib/Twig/Node/Expression/Test/Constant.php
Compiles the node to PHP.
Twig_Node_Expression_Test_Defined::compile in drupal/core/vendor/twig/twig/lib/Twig/Node/Expression/Test/Defined.php
Compiles the node to PHP.
Twig_Node_Expression_Test_Divisibleby::compile in drupal/core/vendor/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php
Compiles the node to PHP.
Twig_Node_Expression_Test_Even::compile in drupal/core/vendor/twig/twig/lib/Twig/Node/Expression/Test/Even.php
Compiles the node to PHP.
Twig_Node_Expression_Test_Null::compile in drupal/core/vendor/twig/twig/lib/Twig/Node/Expression/Test/Null.php
Compiles the node to PHP.

... See full list

File

drupal/core/vendor/twig/twig/lib/Twig/Node/Expression/Test.php, line 18

Class

Twig_Node_Expression_Test

Code

public function compile(Twig_Compiler $compiler) {
  $name = $this
    ->getAttribute('name');
  $testMap = $compiler
    ->getEnvironment()
    ->getTests();
  if (!isset($testMap[$name])) {
    $message = sprintf('The test "%s" does not exist', $name);
    if ($alternatives = $compiler
      ->getEnvironment()
      ->computeAlternatives($name, array_keys($compiler
      ->getEnvironment()
      ->getTests()))) {
      $message = sprintf('%s. Did you mean "%s"', $message, implode('", "', $alternatives));
    }
    throw new Twig_Error_Syntax($message, $this
      ->getLine());
  }
  $name = $this
    ->getAttribute('name');
  $node = $this
    ->getNode('node');
  $compiler
    ->raw($testMap[$name]
    ->compile() . '(')
    ->subcompile($node);
  if (null !== $this
    ->getNode('arguments')) {
    $compiler
      ->raw(', ');
    $max = count($this
      ->getNode('arguments')) - 1;
    foreach ($this
      ->getNode('arguments') as $i => $arg) {
      $compiler
        ->subcompile($arg);
      if ($i != $max) {
        $compiler
          ->raw(', ');
      }
    }
  }
  $compiler
    ->raw(')');
}