22
33namespace Kiboko \Plugin \FastMap \Factory ;
44
5+ use Kiboko \Component \FastMap \Mapping \Composite \ArrayAppendMapper ;
6+ use Kiboko \Component \FastMapConfig \ArrayAppendBuilder ;
57use Kiboko \Component \FastMapConfig \ArrayBuilder ;
8+ use Kiboko \Component \FastMapConfig \ObjectAppendBuilder ;
9+ use Kiboko \Component \FastMapConfig \ObjectBuilder ;
610use Kiboko \Contract \Configurator \InvalidConfigurationException ;
711use Kiboko \Plugin \FastMap ;
812use 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