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 \Contract \Configurator \RepositoryInterface ;
812use 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