/**
  * {@inheritdoc}
  */
 public function __invoke(FilterTransformer $transformer, Expression $expression, $element, Configuration $config)
 {
     $reducer = function ($curry, $expression) use($transformer, $element, $config) {
         return call_user_func($this->callback, $curry, $transformer->resolve($expression, $element, $config));
     };
     return array_reduce($expression->getArgs(), $reducer, $this->initial);
 }
 public function testUnsupportedExpressionException()
 {
     $this->expectException(\InvalidArgumentException::class);
     $filter = $this->transformer->transform($this->createMock(Expression::class), $this->config);
     $filter([]);
 }
 /**
  * {@inheritdoc}
  */
 public function __invoke(FilterTransformer $transformer, Expression $expression, $element, Configuration $config)
 {
     $left = $transformer->resolve($expression->getArg(0), $element, $config);
     $right = $transformer->resolve($expression->getArg(1), $element, $config);
     return call_user_func($this->callback, $left, $right);
 }
 /**
  * {@inheritdoc}
  */
 public function __invoke(FilterTransformer $transformer, Expression $expression, $element, Configuration $config)
 {
     return array_map(function ($expression) use($element, $transformer, $config) {
         return $transformer->resolve($expression, $element, $config);
     }, $expression->getArgs());
 }