Exemplo n.º 1
0
 /**
  * Wraps one ViewHelper argument evaluation in a closure that can be
  * rendered by passing a rendering context.
  *
  * @param ViewHelperNode $node
  * @param string $argumentName
  * @return string
  */
 public function wrapViewHelperNodeArgumentEvaluationInClosure(ViewHelperNode $node, $argumentName)
 {
     $arguments = $node->getArguments();
     $argument = $arguments[$argumentName];
     $closure = 'function() use ($renderingContext, $self) {' . chr(10);
     if ($node->getArgumentDefinition($argumentName)->getType() === 'boolean') {
         // We treat boolean nodes by compiling a closure to evaluate the stack of the boolean argument
         $compiledIfArgumentStack = $this->nodeConverter->convert(new ArrayNode($argument->getStack()));
         $closure .= $compiledIfArgumentStack['initialization'] . chr(10);
         $closure .= sprintf('return \\TYPO3Fluid\\Fluid\\Core\\Parser\\SyntaxTree\\BooleanNode::evaluateStack($renderingContext, %s);', $compiledIfArgumentStack['execution']) . chr(10);
     } else {
         $closure .= sprintf('$argument = unserialize(\'%s\'); return $argument->evaluate($renderingContext);', serialize($argument)) . chr(10);
     }
     $closure .= '}';
     return $closure;
 }
Exemplo n.º 2
0
 /**
  * @test
  * @dataProvider getConvertTestValues
  * @param NodeInterface $node
  * @param string $expected
  */
 public function testConvert(NodeInterface $node, $expected)
 {
     $instance = new NodeConverter(new TemplateCompiler());
     $result = $instance->convert($node);
     $this->assertEquals($expected, $result['execution']);
 }
Exemplo n.º 3
0
 /**
  * @test
  */
 public function testSetVariableCounter()
 {
     $instance = new NodeConverter(new TemplateCompiler());
     $instance->setVariableCounter(10);
     $this->assertAttributeEquals(10, 'variableCounter', $instance);
 }