Skip to content

Commit da6e49a

Browse files
authored
Merge pull request #15 from php-etl/fix/append-option
Fix Append option
2 parents 8217c7a + d615e2f commit da6e49a

File tree

5 files changed

+33
-12
lines changed

5 files changed

+33
-12
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: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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
@@ -301,6 +301,7 @@ public function getConditionalTreeBuilder(): TreeBuilder
301301
->end()
302302
->children()
303303
->scalarNode('condition')->end()
304+
->booleanNode('append')->end()
304305
->append($this->getMapTreeBuilder()->getRootNode())
305306
->append($this->getListTreeBuilder()->getRootNode())
306307
->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\Plugin\FastMap;
812
use Kiboko\Contract\Configurator;
@@ -60,9 +64,17 @@ public function compile(array $config): Repository\TransformerMapper
6064
foreach ($config as $alternative) {
6165
try {
6266
if (array_key_exists('map', $alternative)) {
63-
$mapper = new ArrayBuilder(
64-
interpreter: $this->interpreter,
65-
);
67+
if (array_key_exists('append', $alternative)
68+
&& $alternative['append'] === true
69+
) {
70+
$mapper = new ArrayAppendBuilder(
71+
interpreter: $this->interpreter,
72+
);
73+
} else {
74+
$mapper = new ArrayBuilder(
75+
interpreter: $this->interpreter,
76+
);
77+
}
6678

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

@@ -80,11 +92,19 @@ public function compile(array $config): Repository\TransformerMapper
8092
);
8193
}
8294
} elseif (array_key_exists('object', $alternative)) {
83-
$mapper = new ArrayBuilder(
84-
interpreter: $this->interpreter,
85-
);
95+
if (array_key_exists('append', $alternative)
96+
&& $alternative['append'] === true
97+
) {
98+
$mapper = new ObjectAppendBuilder(
99+
interpreter: $this->interpreter,
100+
);
101+
} else {
102+
$mapper = new ObjectBuilder(
103+
interpreter: $this->interpreter,
104+
);
105+
}
86106

87-
$mapperBuilder = new FastMap\Builder\ArrayMapper($mapper);
107+
$mapperBuilder = new FastMap\Builder\ObjectMapper($mapper);
88108

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

0 commit comments

Comments
 (0)