mirror of
https://github.com/BreizhHardware/memoizee.git
synced 2026-03-18 21:40:27 +01:00
Merge pull request #72 from epayet/expose-get-has
Expose `get` and `has` methods
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user