Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d3f44f5

Browse files
committed
Pass expression object to expression evaluator.
1 parent 2440998 commit d3f44f5

File tree

16 files changed

+181
-42
lines changed

16 files changed

+181
-42
lines changed

src/Application/Action/Add.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace AkeneoE3\Application\Action;
66

77
use AkeneoE3\Application\Expression\ActionState;
8-
use AkeneoE3\Application\Expression\ExpressionLanguage;
8+
use AkeneoE3\Application\Expression\ExpressionEvaluator;
99
use AkeneoE3\Domain\Action;
1010
use AkeneoE3\Domain\Exception\TransformException;
1111
use AkeneoE3\Domain\Resource\Field;
@@ -18,9 +18,9 @@ final class Add implements Action
1818

1919
private AddRemoveOptions $options;
2020

21-
private ExpressionLanguage $expressionLanguage;
21+
private ExpressionEvaluator $expressionLanguage;
2222

23-
public function __construct(ExpressionLanguage $expressionLanguage, array $options)
23+
public function __construct(ExpressionEvaluator $expressionLanguage, array $options)
2424
{
2525
$this->expressionLanguage = $expressionLanguage;
2626
$this->field = FieldFactory::fromOptions($options);

src/Application/Action/Remove.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace AkeneoE3\Application\Action;
66

77
use AkeneoE3\Application\Expression\ActionState;
8-
use AkeneoE3\Application\Expression\ExpressionLanguage;
8+
use AkeneoE3\Application\Expression\ExpressionEvaluator;
99
use AkeneoE3\Domain\Action;
1010
use AkeneoE3\Domain\Exception\TransformException;
1111
use AkeneoE3\Domain\Resource\Field;
@@ -18,9 +18,9 @@ final class Remove implements Action
1818

1919
private AddRemoveOptions $options;
2020

21-
private ExpressionLanguage $expressionLanguage;
21+
private ExpressionEvaluator $expressionLanguage;
2222

23-
public function __construct(ExpressionLanguage $expressionLanguage, array $options)
23+
public function __construct(ExpressionEvaluator $expressionLanguage, array $options)
2424
{
2525
$this->expressionLanguage = $expressionLanguage;
2626
$this->field = FieldFactory::fromOptions($options);

src/Application/Action/Set.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace AkeneoE3\Application\Action;
66

77
use AkeneoE3\Application\Expression\ActionState;
8-
use AkeneoE3\Application\Expression\ExpressionLanguage;
8+
use AkeneoE3\Application\Expression\ExpressionEvaluator;
99
use AkeneoE3\Domain\Action;
1010
use AkeneoE3\Domain\Resource\Field;
1111
use AkeneoE3\Domain\Resource\FieldFactory;
@@ -17,9 +17,9 @@ final class Set implements Action
1717

1818
private SetOptions $options;
1919

20-
private ExpressionLanguage $expressionLanguage;
20+
private ExpressionEvaluator $expressionLanguage;
2121

22-
public function __construct(ExpressionLanguage $expressionLanguage, array $options)
22+
public function __construct(ExpressionEvaluator $expressionLanguage, array $options)
2323
{
2424
$this->expressionLanguage = $expressionLanguage;
2525
$this->field = FieldFactory::fromOptions($options);

src/Application/ActionFactory.php

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,32 @@
44

55
namespace AkeneoE3\Application;
66

7+
use AkeneoE3\Application\Expression\ExpressionEvaluator;
78
use AkeneoE3\Domain\Action;
89
use AkeneoE3\Application\Action as Actions;
910
use AkeneoE3\Domain\Profile\TransformProfile;
1011
use LogicException;
11-
use AkeneoE3\Application\Expression\ExpressionLanguage;
1212

1313
final class ActionFactory
1414
{
15+
private ExpressionEvaluator $expressionLanguage;
16+
17+
public function __construct(ExpressionEvaluator $expressionLanguage)
18+
{
19+
$this->expressionLanguage = $expressionLanguage;
20+
}
21+
1522
public function create(string $type, array $options): Action
1623
{
1724
switch ($type) {
1825
case 'set':
19-
$action = new Actions\Set(new ExpressionLanguage(), $options);
26+
$action = new Actions\Set($this->expressionLanguage, $options);
2027
break;
2128
case 'add':
22-
$action = new Actions\Add(new ExpressionLanguage(), $options);
29+
$action = new Actions\Add($this->expressionLanguage, $options);
2330
break;
2431
case 'remove':
25-
$action = new Actions\Remove(new ExpressionLanguage(), $options);
32+
$action = new Actions\Remove($this->expressionLanguage, $options);
2633
break;
2734
case 'duplicate':
2835
$action = new Actions\Duplicate($options);
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace AkeneoE3\Application\Expression;
6+
7+
use Symfony\Component\ExpressionLanguage\ExpressionLanguage as BaseExpressionLanguage;
8+
9+
final class E3ExpressionEvaluator implements ExpressionEvaluator
10+
{
11+
private BaseExpressionLanguage $expressionLanguage;
12+
13+
private ExpressionObject $expressionObject;
14+
15+
public function __construct(ExpressionObject $expressionObject)
16+
{
17+
$this->expressionLanguage = new BaseExpressionLanguage(
18+
null,
19+
[new FunctionProvider()]
20+
);
21+
22+
$this->expressionObject = $expressionObject;
23+
}
24+
25+
/**
26+
* @return mixed|null
27+
*/
28+
public function evaluate(string $expression, array $values = [])
29+
{
30+
return $this->expressionLanguage->evaluate($expression, $values);
31+
}
32+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
3+
namespace AkeneoE3\Application\Expression;
4+
5+
interface ExpressionEvaluator
6+
{
7+
/**
8+
* @return mixed|null
9+
*/
10+
public function evaluate(string $expression, array $values = []);
11+
}

src/Application/Expression/ExpressionLanguage.php

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
namespace AkeneoE3\Application\Expression;
4+
5+
interface ExpressionObject
6+
{
7+
public function getName(): string;
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
namespace AkeneoE3\Application\Expression;
4+
5+
interface ExpressionObjectProvider
6+
{
7+
public function get(): ExpressionObject;
8+
}

src/Domain/Resource/ResourceType.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ public static function create(string $code): self
2727
return new self($code);
2828
}
2929

30+
public static function referenceEntityAttribute(): self
31+
{
32+
return new self('reference-entity-attribute');
33+
}
34+
3035
public function __toString(): string
3136
{
3237
return $this->code;

0 commit comments

Comments
 (0)