Skip to content

Commit d615e2f

Browse files
committed
Fix Append option
1 parent d0a37df commit d615e2f

File tree

5 files changed

+34
-13
lines changed

5 files changed

+34
-13
lines changed

src/Builder/ArrayMapper.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
namespace Kiboko\Plugin\FastMap\Builder;
44

5-
use Kiboko\Component\FastMapConfig\ArrayBuilder;
5+
use Kiboko\Component\FastMapConfig\ArrayBuilderInterface;
66
use PhpParser\Builder;
77
use PhpParser\Node;
88

99
final class ArrayMapper implements Builder
1010
{
11-
public function __construct(private ArrayBuilder $mapper)
11+
public function __construct(private ArrayBuilderInterface $mapper)
1212
{
1313
}
1414

src/Builder/ConditionalMapper.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ private function compileConditions(array $alternatives): Node
7171
),
7272
...array_map(
7373
function ($alternative) use ($parser) {
74-
[$condition, $repository] = $alternative;
74+
[$condition, $builder] = $alternative;
7575

7676
return new Node\Expr\ArrayItem(
7777
$builder->getNode()
@@ -164,7 +164,7 @@ function ($alternative, $index) use ($parser) {
164164
'else' => new Node\Stmt\Else_(
165165
stmts: [
166166
new Node\Stmt\Return_(
167-
new Node\Expr\Variable('output'),
167+
new Node\Expr\Variable('input'),
168168
)
169169
]
170170
)

src/Builder/ObjectMapper.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
namespace Kiboko\Plugin\FastMap\Builder;
44

5-
use Kiboko\Component\FastMapConfig\ObjectBuilder;
5+
use Kiboko\Component\FastMapConfig\ObjectBuilderInterface;
66
use PhpParser\Builder;
77
use PhpParser\Node;
88

99
final class ObjectMapper implements Builder
1010
{
11-
public function __construct(private ObjectBuilder $mapper)
11+
public function __construct(private ObjectBuilderInterface $mapper)
1212
{
1313
}
1414

src/Configuration.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ public function getConditionalTreeBuilder(): TreeBuilder
341341
->end()
342342
->children()
343343
->scalarNode('condition')->end()
344+
->booleanNode('append')->end()
344345
->append($this->getMapTreeBuilder()->getRootNode())
345346
->append($this->getListTreeBuilder()->getRootNode())
346347
->append($this->getObjectTreeBuilder()->getRootNode())

src/Factory/ConditionalMapper.php

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22

33
namespace Kiboko\Plugin\FastMap\Factory;
44

5+
use Kiboko\Component\FastMap\Mapping\Composite\ArrayAppendMapper;
6+
use Kiboko\Component\FastMapConfig\ArrayAppendBuilder;
57
use Kiboko\Component\FastMapConfig\ArrayBuilder;
8+
use Kiboko\Component\FastMapConfig\ObjectAppendBuilder;
9+
use Kiboko\Component\FastMapConfig\ObjectBuilder;
610
use Kiboko\Contract\Configurator\InvalidConfigurationException;
711
use Kiboko\Contract\Configurator\RepositoryInterface;
812
use Kiboko\Plugin\FastMap;
@@ -61,9 +65,17 @@ public function compile(array $config): RepositoryInterface
6165
foreach ($config as $alternative) {
6266
try {
6367
if (array_key_exists('map', $alternative)) {
64-
$mapper = new ArrayBuilder(
65-
interpreter: $this->interpreter,
66-
);
68+
if (array_key_exists('append', $alternative)
69+
&& $alternative['append'] === true
70+
) {
71+
$mapper = new ArrayAppendBuilder(
72+
interpreter: $this->interpreter,
73+
);
74+
} else {
75+
$mapper = new ArrayBuilder(
76+
interpreter: $this->interpreter,
77+
);
78+
}
6779

6880
$mapperBuilder = new FastMap\Builder\ArrayMapper($mapper);
6981

@@ -81,11 +93,19 @@ public function compile(array $config): RepositoryInterface
8193
);
8294
}
8395
} elseif (array_key_exists('object', $alternative)) {
84-
$mapper = new ArrayBuilder(
85-
interpreter: $this->interpreter,
86-
);
96+
if (array_key_exists('append', $alternative)
97+
&& $alternative['append'] === true
98+
) {
99+
$mapper = new ObjectAppendBuilder(
100+
interpreter: $this->interpreter,
101+
);
102+
} else {
103+
$mapper = new ObjectBuilder(
104+
interpreter: $this->interpreter,
105+
);
106+
}
87107

88-
$mapperBuilder = new FastMap\Builder\ArrayMapper($mapper);
108+
$mapperBuilder = new FastMap\Builder\ObjectMapper($mapper);
89109

90110
(new FastMap\Configuration\ConfigurationApplier())($mapper->children(), $alternative['object']);
91111

0 commit comments

Comments
 (0)