Provide length to getNormalizer

This commit is contained in:
Mariusz Nowak
2014-04-27 13:44:45 +02:00
parent 48fadbe765
commit 29808f6776

View File

@@ -3,16 +3,21 @@
var forEach = require('es5-ext/object/for-each')
, normalizeOpts = require('es5-ext/object/normalize-options')
, callable = require('es5-ext/object/valid-callable')
, lazy = require('d/lazy');
, lazy = require('d/lazy')
, resolveLength = require('./resolve-length')
, extensions = require('./registered-extensions');
module.exports = function (memoize) {
return function (props) {
forEach(props, function (desc, name) {
var fn = callable(desc.value);
var fn = callable(desc.value), length;
desc.value = function (options) {
if (options.getNormalizer) {
options = normalizeOpts(options);
options.normalizer = options.getNormalizer();
if (length === undefined) {
length = resolveLength(options.length, fn.length, options.async && extensions.async);
}
options.normalizer = options.getNormalizer(length);
delete options.getNormalizer;
}
return memoize(fn.bind(this), options);