@@ -40,7 +40,7 @@ const normalizeField = delimiter =>
4040 Maybe . of
4141 )
4242
43- const getMapSpec = ( mapping , delimiter ) =>
43+ const getMapSpec = delimiter => mapping =>
4444 Maybe . of ( mapping )
4545 . map ( Array . isArray )
4646 . map ( b => ( b ? Either . of ( mapping ) : left ( mapping ) ) )
@@ -53,7 +53,6 @@ const getMapSpec = (mapping, delimiter) =>
5353 } ) ( [ [ ] , null ] )
5454 )
5555 )
56- . join ( )
5756
5857const normalizeMapping = mapping =>
5958 typeof mapping === 'string' ? { field : mapping } : mapping
@@ -91,27 +90,27 @@ class Mapper {
9190 }
9291
9392 map ( mappings , curr , next = Object . create ( null ) ) {
94- return mappings . map ( normalizeMapping ) . reduce ( ( accum , mapping ) => {
95- const [ sourceField , targetField ] = getMapSpec (
96- mapping . field ,
97- this . config . mapDelimiter
98- )
99-
100- const set = assign ( targetField , this . config . objDelimiter )
101-
102- const fn = compose (
103- maybe ( accum ) ( set . bind ( this , accum ) ) ,
104- Maybe . of ,
105- /* End user-land transforms */
106- ... this . config . postFilters ,
107- getMappingFilter ( mapping . type , this . config . types ) ,
108- ... this . config . preFilters ,
109- /* Begin user-land transforms */
110- map ( field => get ( field , this . config . objDelimiter ) ( curr ) )
111- )
112-
113- return fn ( sourceField , mapping , this . config , curr , accum )
114- } , next )
93+ return mappings . map ( normalizeMapping ) . reduce (
94+ ( accum , mapping ) =>
95+ Maybe . of ( mapping . field )
96+ . chain ( getMapSpec ( this . config . mapDelimiter ) )
97+ . chain ( ( [ sourceField , targetField ] ) =>
98+ compose (
99+ maybe ( accum ) (
100+ assign ( targetField , this . config . objDelimiter ) . bind ( this , accum )
101+ ) ,
102+ Maybe . of ,
103+ /* End user-land transforms */
104+ ... this . config . postFilters ,
105+ getMappingFilter ( mapping . type , this . config . types ) ,
106+ ... this . config . preFilters ,
107+ /* Begin user-land transforms */
108+ map ( field => get ( field , this . config . objDelimiter ) ( curr ) )
109+ /* Fields passed to user functions */
110+ ) ( sourceField , mapping , this . config , curr , accum )
111+ ) ,
112+ next
113+ )
115114 }
116115}
117116
0 commit comments