Merge pull request #72 from epayet/expose-get-has

Expose `get` and `has` methods
This commit is contained in:
Mariusz Nowak
2017-03-15 08:12:10 +01:00
committed by GitHub
2 changed files with 32 additions and 3 deletions

View File

@@ -13,8 +13,8 @@ var customError = require('es5-ext/error/custom')
, on = ee.on, emit = ee.emit;
module.exports = function (original, length, options) {
var cache = create(null), conf, memLength, get, set, del, clear, extDel, normalizer
, getListeners, setListeners, deleteListeners, memoized, resolve;
var cache = create(null), conf, memLength, get, set, del, clear, extDel,
extGet, extHas, normalizer, getListeners, setListeners, deleteListeners, memoized, resolve;
if (length !== false) memLength = length;
else if (isNaN(original.length)) memLength = 1;
else memLength = original.length;
@@ -135,10 +135,25 @@ module.exports = function (original, length, options) {
return conf.delete(arg);
};
}
extGet = defineLength(function () {
var id, args = arguments;
if (resolve) args = resolve(args);
id = get(args);
return cache[id];
});
extHas = defineLength(function () {
var id, args = arguments;
if (resolve) args = resolve(args);
id = get(args);
if (id === null) return false;
return conf.has(id);
});
defineProperties(memoized, {
__memoized__: d(true),
delete: d(extDel),
clear: d(conf.clear)
clear: d(conf.clear),
_get: d(extGet),
_has: d(extHas)
});
return conf;
};

View File

@@ -25,6 +25,20 @@ module.exports = function () {
a(mfn(y, 'bar', 'zeta'), 'foobarzeta', "#3");
a(i, 2, "Called twice");
},
_get: function (a) {
var fn = function (x) { return x; }, mfn;
mfn = memoize(fn);
a(mfn._get('foo'), undefined);
mfn('foo');
a(mfn._get('foo'), 'foo');
},
_has: function (a) {
var fn = function (x) { return x; }, mfn;
mfn = memoize(fn);
a(mfn._has('foo'), false);
mfn('foo');
a(mfn._has('foo'), true);
},
Circular: function (a) {
var i = 0, fn;
fn = memoize(function (x) {