mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-08 10:17:48 +00:00
Move ListCache modules into ListCache.
This commit is contained in:
@@ -1,17 +1,17 @@
|
|||||||
import listCacheClear from './.internal/listCacheClear.js';
|
import assocIndexOf from './.internal/assocIndexOf.js';
|
||||||
import listCacheDelete from './.internal/listCacheDelete.js';
|
|
||||||
import listCacheGet from './.internal/listCacheGet.js';
|
/** Built-in value references. */
|
||||||
import listCacheHas from './.internal/listCacheHas.js';
|
const splice = Array.prototype.splice;
|
||||||
import listCacheSet from './.internal/listCacheSet.js';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an list cache object.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @constructor
|
|
||||||
* @param {Array} [entries] The key-value pairs to cache.
|
|
||||||
*/
|
|
||||||
class ListCache {
|
class ListCache {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an list cache object.
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @constructor
|
||||||
|
* @param {Array} [entries] The key-value pairs to cache.
|
||||||
|
*/
|
||||||
constructor(entries) {
|
constructor(entries) {
|
||||||
let index = -1;
|
let index = -1;
|
||||||
const length = entries == null ? 0 : entries.length;
|
const length = entries == null ? 0 : entries.length;
|
||||||
@@ -22,13 +22,85 @@ class ListCache {
|
|||||||
this.set(entry[0], entry[1]);
|
this.set(entry[0], entry[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes all key-value entries from the list cache.
|
||||||
|
*
|
||||||
|
* @memberOf ListCache
|
||||||
|
*/
|
||||||
|
clear() {
|
||||||
|
this.__data__ = [];
|
||||||
|
this.size = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes `key` and its value from the list cache.
|
||||||
|
*
|
||||||
|
* @memberOf ListCache
|
||||||
|
* @param {string} key The key of the value to remove.
|
||||||
|
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||||||
|
*/
|
||||||
|
delete(key) {
|
||||||
|
const data = this.__data__;
|
||||||
|
const index = assocIndexOf(data, key);
|
||||||
|
|
||||||
|
if (index < 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const lastIndex = data.length - 1;
|
||||||
|
if (index == lastIndex) {
|
||||||
|
data.pop();
|
||||||
|
} else {
|
||||||
|
splice.call(data, index, 1);
|
||||||
|
}
|
||||||
|
--this.size;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the list cache value for `key`.
|
||||||
|
*
|
||||||
|
* @memberOf ListCache
|
||||||
|
* @param {string} key The key of the value to get.
|
||||||
|
* @returns {*} Returns the entry value.
|
||||||
|
*/
|
||||||
|
get(key) {
|
||||||
|
const data = this.__data__;
|
||||||
|
const index = assocIndexOf(data, key);
|
||||||
|
return index < 0 ? undefined : data[index][1];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if a list cache value for `key` exists.
|
||||||
|
*
|
||||||
|
* @memberOf ListCache
|
||||||
|
* @param {string} key The key of the entry to check.
|
||||||
|
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||||||
|
*/
|
||||||
|
has(key) {
|
||||||
|
return assocIndexOf(this.__data__, key) > -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the list cache `key` to `value`.
|
||||||
|
*
|
||||||
|
* @memberOf ListCache
|
||||||
|
* @param {string} key The key of the value to set.
|
||||||
|
* @param {*} value The value to set.
|
||||||
|
* @returns {Object} Returns the list cache instance.
|
||||||
|
*/
|
||||||
|
set(key, value) {
|
||||||
|
const data = this.__data__;
|
||||||
|
const index = assocIndexOf(data, key);
|
||||||
|
|
||||||
|
if (index < 0) {
|
||||||
|
++this.size;
|
||||||
|
data.push([key, value]);
|
||||||
|
} else {
|
||||||
|
data[index][1] = value;
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add methods to `ListCache`.
|
|
||||||
ListCache.prototype.clear = listCacheClear;
|
|
||||||
ListCache.prototype['delete'] = listCacheDelete;
|
|
||||||
ListCache.prototype.get = listCacheGet;
|
|
||||||
ListCache.prototype.has = listCacheHas;
|
|
||||||
ListCache.prototype.set = listCacheSet;
|
|
||||||
|
|
||||||
export default ListCache;
|
export default ListCache;
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
/**
|
|
||||||
* Removes all key-value entries from the list cache.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @name clear
|
|
||||||
* @memberOf ListCache
|
|
||||||
*/
|
|
||||||
function listCacheClear() {
|
|
||||||
this.__data__ = [];
|
|
||||||
this.size = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default listCacheClear;
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
import assocIndexOf from './.internal/assocIndexOf.js';
|
|
||||||
|
|
||||||
/** Built-in value references. */
|
|
||||||
const splice = Array.prototype.splice;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes `key` and its value from the list cache.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @name delete
|
|
||||||
* @memberOf ListCache
|
|
||||||
* @param {string} key The key of the value to remove.
|
|
||||||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
|
||||||
*/
|
|
||||||
function listCacheDelete(key) {
|
|
||||||
const data = this.__data__;
|
|
||||||
const index = assocIndexOf(data, key);
|
|
||||||
|
|
||||||
if (index < 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const lastIndex = data.length - 1;
|
|
||||||
if (index == lastIndex) {
|
|
||||||
data.pop();
|
|
||||||
} else {
|
|
||||||
splice.call(data, index, 1);
|
|
||||||
}
|
|
||||||
--this.size;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default listCacheDelete;
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
import assocIndexOf from './.internal/assocIndexOf.js';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the list cache value for `key`.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @name get
|
|
||||||
* @memberOf ListCache
|
|
||||||
* @param {string} key The key of the value to get.
|
|
||||||
* @returns {*} Returns the entry value.
|
|
||||||
*/
|
|
||||||
function listCacheGet(key) {
|
|
||||||
const data = this.__data__;
|
|
||||||
const index = assocIndexOf(data, key);
|
|
||||||
|
|
||||||
return index < 0 ? undefined : data[index][1];
|
|
||||||
}
|
|
||||||
|
|
||||||
export default listCacheGet;
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
import assocIndexOf from './.internal/assocIndexOf.js';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if a list cache value for `key` exists.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @name has
|
|
||||||
* @memberOf ListCache
|
|
||||||
* @param {string} key The key of the entry to check.
|
|
||||||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
|
||||||
*/
|
|
||||||
function listCacheHas(key) {
|
|
||||||
return assocIndexOf(this.__data__, key) > -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default listCacheHas;
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
import assocIndexOf from './.internal/assocIndexOf.js';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the list cache `key` to `value`.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @name set
|
|
||||||
* @memberOf ListCache
|
|
||||||
* @param {string} key The key of the value to set.
|
|
||||||
* @param {*} value The value to set.
|
|
||||||
* @returns {Object} Returns the list cache instance.
|
|
||||||
*/
|
|
||||||
function listCacheSet(key, value) {
|
|
||||||
const data = this.__data__;
|
|
||||||
const index = assocIndexOf(data, key);
|
|
||||||
|
|
||||||
if (index < 0) {
|
|
||||||
++this.size;
|
|
||||||
data.push([key, value]);
|
|
||||||
} else {
|
|
||||||
data[index][1] = value;
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default listCacheSet;
|
|
||||||
Reference in New Issue
Block a user