Example #1
0
 /**
  * @covers Twig_Node_Expression_Test::__construct
  */
 public function testConstructor()
 {
     $expr = new Twig_Node_Expression_Constant('foo', 1);
     $name = new Twig_Node_Expression_Constant('null', 1);
     $args = new Twig_Node();
     $node = new Twig_Node_Expression_Test($expr, $name, $args, 1);
     $this->assertEquals($expr, $node->getNode('node'));
     $this->assertEquals($args, $node->getNode('arguments'));
     $this->assertEquals($name, $node->getAttribute('name'));
 }
Example #2
0
 public function __construct(Twig_NodeInterface $node, $name, Twig_NodeInterface $arguments = null, $lineno)
 {
     parent::__construct($node, $name, $arguments, $lineno);
     if ($node instanceof Twig_Node_Expression_Name) {
         $node->setAttribute('is_defined_test', true);
     } elseif ($node instanceof Twig_Node_Expression_GetAttr) {
         $node->setAttribute('is_defined_test', true);
         $this->changeIgnoreStrictCheck($node);
     } else {
         throw new Twig_Error_Syntax('The "defined" test only works with simple variables', $this->getLine());
     }
 }
Example #3
0
 public function __construct(Twig_Node $node, $name, Twig_Node $arguments = null, $lineno)
 {
     if ($node instanceof Twig_Node_Expression_Name) {
         $node->setAttribute('is_defined_test', true);
     } elseif ($node instanceof Twig_Node_Expression_GetAttr) {
         $node->setAttribute('is_defined_test', true);
         $this->changeIgnoreStrictCheck($node);
     } elseif ($node instanceof Twig_Node_Expression_Constant || $node instanceof Twig_Node_Expression_Array || $node instanceof Twig_Node_Expression_GetProperty || $node instanceof Twig_Node_Expression_MethodCall) {
         $node = new Twig_Node_Expression_Constant(true, $node->getLine());
     } else {
         throw new Twig_Error_Syntax('The "defined" test only works with simple variables.', $this->getLine());
     }
     parent::__construct($node, $name, $arguments, $lineno);
 }
Example #4
0
 public function __construct(Twig_NodeInterface $node, $name, Twig_NodeInterface $arguments = null, $lineno)
 {
     if ($node instanceof Twig_Node_Expression_Name) {
         $node->setAttribute('is_defined_test', true);
     } elseif ($node instanceof Twig_Node_Expression_GetAttr) {
         $node->setAttribute('is_defined_test', true);
         $this->changeIgnoreStrictCheck($node);
     } elseif ($node instanceof Twig_Node_Expression_BlockReference) {
         $node->setAttribute('is_defined_test', true);
     } elseif ($node instanceof Twig_Node_Expression_Function && 'constant' === $node->getAttribute('name')) {
         $node->setAttribute('is_defined_test', true);
     } elseif ($node instanceof Twig_Node_Expression_Constant || $node instanceof Twig_Node_Expression_Array) {
         $node = new Twig_Node_Expression_Constant(true, $node->getTemplateLine());
     } else {
         throw new Twig_Error_Syntax('The "defined" test only works with simple variables.', $this->getTemplateLine());
     }
     parent::__construct($node, $name, $arguments, $lineno);
 }
Example #5
0
 public function compile(JsCompiler $compiler, \Twig_Node_Expression_Test $node)
 {
     $compiler->raw('1 === ')->subcompile($node->getNode('node'))->raw(' % 2');
 }
Example #6
0
 public function compile(JsCompiler $compiler, \Twig_Node_Expression_Test $node)
 {
     $compiler->raw('(')->subcompile($node->getNode('node'))->raw(' === ')->subcompile($node->getNode('arguments')->getNode(0))->raw(')');
 }