Example #1
0
 /**
  * @test
  * @dataProvider getSomeEvaluationTestValues
  * @param string $comparison
  * @param boolean $expected
  */
 public function testSomeEvaluations($comparison, $expected, $variables = array())
 {
     $parser = new BooleanParser();
     $this->assertEquals($expected, BooleanNode::convertToBoolean($parser->evaluate($comparison, $variables), $this->renderingContext), 'Expression: ' . $comparison);
     $compiledEvaluation = $parser->compile($comparison);
     $functionName = 'expression_' . md5($comparison . rand(0, 100000));
     eval('function ' . $functionName . '($context) {return ' . $compiledEvaluation . ';}');
     $this->assertEquals($expected, BooleanNode::convertToBoolean($functionName($variables), $this->renderingContext), 'compiled Expression: ' . $compiledEvaluation);
 }
 /**
  * @param RenderingContextInterface $renderingContext
  * @param string $expression
  * @param array $matches
  * @return mixed
  */
 public static function evaluateExpression(RenderingContextInterface $renderingContext, $expression, array $matches)
 {
     $parts = preg_split('/([\\?:])/s', $expression);
     $parts = array_map(array(__CLASS__, 'trimPart'), $parts);
     list($check, $then, $else) = $parts;
     $checkResult = Parser\SyntaxTree\BooleanNode::convertToBoolean(parent::getTemplateVariableOrValueItself($check, $renderingContext));
     if ($checkResult) {
         return parent::getTemplateVariableOrValueItself($then, $renderingContext);
     } else {
         return parent::getTemplateVariableOrValueItself($else, $renderingContext);
     }
 }
Example #3
0
 /**
  * @param mixed $input
  * @param boolean $expected
  * @test
  * @dataProvider getStandardInputTypes
  */
 public function acceptsStandardTypesAsInput($input, $expected)
 {
     $node = new BooleanNode($input);
     $this->assertEquals($expected, $node->evaluate($this->renderingContext));
 }
Example #4
0
 /**
  * @param NodeInterface $node
  * @param RenderingContextInterface $renderingContext
  * @return boolean
  */
 public static function createFromNodeAndEvaluate(NodeInterface $node, RenderingContextInterface $renderingContext)
 {
     $booleanNode = new BooleanNode($node);
     return $booleanNode->evaluate($renderingContext);
 }
Example #5
0
    /**
     * @param BooleanNode $node
     * @return array
     * @see convert()
     */
    protected function convertBooleanNode(BooleanNode $node)
    {
        $stack = $this->convertArrayNode(new ArrayNode($node->getStack()));
        $initializationPhpCode = '// Rendering Boolean node' . chr(10);
        $initializationPhpCode .= $stack['initialization'] . chr(10);
        $parser = new BooleanParser();
        $compiledExpression = $parser->compile(BooleanNode::reconcatenateExpression($node->getStack()));
        $functionName = $this->variableName('expression');
        $initializationPhpCode .= $functionName . ' = function($context) {return ' . $compiledExpression . ';};' . chr(10);
        return array('initialization' => $initializationPhpCode, 'execution' => sprintf('%s::convertToBoolean(
					%s(
						%s::gatherContext($renderingContext, %s)
					),
					$renderingContext
				)', BooleanNode::class, $functionName, BooleanNode::class, $stack['execution']));
    }
Example #6
0
 /**
  * @param BooleanNode $node
  * @return array
  * @see convert()
  */
 protected function convertBooleanNode(BooleanNode $node)
 {
     $stack = $this->convertArrayNode(new ArrayNode($node->getStack()));
     $initializationPhpCode = '// Rendering Boolean node' . chr(10);
     $initializationPhpCode = $stack['initialization'] . chr(10);
     return array('initialization' => $initializationPhpCode, 'execution' => sprintf('\\TYPO3Fluid\\Fluid\\Core\\Parser\\SyntaxTree\\BooleanNode::evaluateStack($renderingContext, %s)', $stack['execution']));
 }