diff --git a/lib/configure-map.js b/lib/configure-map.js index 74f1412..9579ae7 100644 --- a/lib/configure-map.js +++ b/lib/configure-map.js @@ -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; }; diff --git a/test/lib/configure-map.js b/test/lib/configure-map.js index e13e61c..a8f7c88 100644 --- a/test/lib/configure-map.js +++ b/test/lib/configure-map.js @@ -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) {