Skip to content

Commit 2135e04

Browse files
committed
Add maybe.of(mapping)
1 parent cd2250f commit 2135e04

1 file changed

Lines changed: 22 additions & 23 deletions

File tree

index.js

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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

5857
const 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

Comments
 (0)