Expose get and has methods

This commit is contained in:
epayet
2017-03-10 16:09:59 +00:00
parent 16601d1d07
commit ff6fadb01d
2 changed files with 30 additions and 2 deletions

View File

@@ -13,7 +13,7 @@ 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
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;
@@ -135,10 +135,24 @@ module.exports = function (original, length, options) {
return conf.delete(arg);
};
}
extGet = function () {
var id, args = arguments;
if (resolve) args = resolve(args);
id = get(args);
return cache[id];
};
extHas = function () {
var id, args = arguments;
if (resolve) args = resolve(args);
id = get(args);
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) {