Skip to content

Commit e2b81a0

Browse files
committed
Refactor call
1 parent b899dcc commit e2b81a0

File tree

1 file changed

+14
-18
lines changed

1 file changed

+14
-18
lines changed

src/expressions/call.js

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,21 @@ import { expressionTypes } from './types';
1919
import { createExpression } from './default';
2020
import { isArraySpread } from '../values/types';
2121

22-
const parameterEvaluator = context => (p, parameter) => {
23-
return p.then(acc => new Promise((resolve, reject) => {
24-
parameter.evaluate(context).then(value => {
25-
if (isArraySpread(value)) {
26-
resolve([
27-
...acc,
28-
...value.asArray(),
29-
]);
30-
} else {
31-
resolve([
32-
...acc,
33-
value,
34-
]);
35-
}
36-
}).catch(reject);
37-
}));
38-
};
22+
const mergeValues = previousParameters => value => isArraySpread(value)
23+
? [
24+
...previousParameters,
25+
...value.asArray(),
26+
]
27+
: [
28+
...previousParameters,
29+
value,
30+
];
31+
32+
const evaluateParameter = (context, parameter) => previousParameters => parameter.evaluate(context).then(mergeValues(previousParameters));
33+
34+
const parameterReducer = context => (acc, parameter) => acc.then(evaluateParameter(context, parameter));
3935

40-
const evaluateParameters = async (context, parameters) => parameters.reduce(parameterEvaluator(context), Promise.resolve([]));
36+
const evaluateParameters = async (context, parameters) => parameters.reduce(parameterReducer(context), Promise.resolve([]));
4137

4238
const evaluate = (location, callee, parameters) => async context => {
4339
context.setLocation(location);

0 commit comments

Comments
 (0)