| var memoize = require('./memoize'); |
| |
| /** Used as the maximum memoize cache size. */ |
| var MAX_MEMOIZE_SIZE = 500; |
| |
| /** |
| * A specialized version of `_.memoize` which clears the memoized function's |
| * cache when it exceeds `MAX_MEMOIZE_SIZE`. |
| * |
| * @private |
| * @param {Function} func The function to have its output memoized. |
| * @returns {Function} Returns the new memoized function. |
| */ |
| function memoizeCapped(func) { |
| var result = memoize(func, function(key) { |
| if (cache.size === MAX_MEMOIZE_SIZE) { |
| cache.clear(); |
| } |
| return key; |
| }); |
| |
| var cache = result.cache; |
| return result; |
| } |
| |
| module.exports = memoizeCapped; |