mirror of
https://github.com/BreizhHardware/memoizee.git
synced 2026-01-18 16:37:21 +01:00
Provide length to getNormalizer
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user