mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-08 18:17:48 +00:00
Move Stack modules into Stack.
This commit is contained in:
@@ -1,29 +1,93 @@
|
|||||||
import ListCache from './.internal/ListCache.js';
|
import ListCache from './.internal/ListCache.js';
|
||||||
import stackClear from './.internal/stackClear.js';
|
import MapCache from './.internal/MapCache.js';
|
||||||
import stackDelete from './.internal/stackDelete.js';
|
|
||||||
import stackGet from './.internal/stackGet.js';
|
/** Used as the size to enable large array optimizations. */
|
||||||
import stackHas from './.internal/stackHas.js';
|
const LARGE_ARRAY_SIZE = 200;
|
||||||
import stackSet from './.internal/stackSet.js';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a stack cache object to store key-value pairs.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @constructor
|
|
||||||
* @param {Array} [entries] The key-value pairs to cache.
|
|
||||||
*/
|
|
||||||
class Stack {
|
class Stack {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a stack cache object to store key-value pairs.
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @constructor
|
||||||
|
* @param {Array} [entries] The key-value pairs to cache.
|
||||||
|
*/
|
||||||
constructor(entries) {
|
constructor(entries) {
|
||||||
const data = this.__data__ = new ListCache(entries);
|
const data = this.__data__ = new ListCache(entries);
|
||||||
this.size = data.size;
|
this.size = data.size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes all key-value entries from the stack.
|
||||||
|
*
|
||||||
|
* @memberOf Stack
|
||||||
|
*/
|
||||||
|
clear() {
|
||||||
|
this.__data__ = new ListCache;
|
||||||
|
this.size = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes `key` and its value from the stack.
|
||||||
|
*
|
||||||
|
* @memberOf Stack
|
||||||
|
* @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 result = data['delete'](key);
|
||||||
|
|
||||||
|
this.size = data.size;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the stack value for `key`.
|
||||||
|
*
|
||||||
|
* @memberOf Stack
|
||||||
|
* @param {string} key The key of the value to get.
|
||||||
|
* @returns {*} Returns the entry value.
|
||||||
|
*/
|
||||||
|
get(key) {
|
||||||
|
return this.__data__.get(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if a stack value for `key` exists.
|
||||||
|
*
|
||||||
|
* @memberOf Stack
|
||||||
|
* @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 this.__data__.has(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the stack `key` to `value`.
|
||||||
|
*
|
||||||
|
* @memberOf Stack
|
||||||
|
* @param {string} key The key of the value to set.
|
||||||
|
* @param {*} value The value to set.
|
||||||
|
* @returns {Object} Returns the stack cache instance.
|
||||||
|
*/
|
||||||
|
set(key, value) {
|
||||||
|
let data = this.__data__;
|
||||||
|
if (data instanceof ListCache) {
|
||||||
|
const pairs = data.__data__;
|
||||||
|
if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
|
||||||
|
pairs.push([key, value]);
|
||||||
|
this.size = ++data.size;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
data = this.__data__ = new MapCache(pairs);
|
||||||
|
}
|
||||||
|
data.set(key, value);
|
||||||
|
this.size = data.size;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add methods to `Stack`.
|
|
||||||
Stack.prototype.clear = stackClear;
|
|
||||||
Stack.prototype['delete'] = stackDelete;
|
|
||||||
Stack.prototype.get = stackGet;
|
|
||||||
Stack.prototype.has = stackHas;
|
|
||||||
Stack.prototype.set = stackSet;
|
|
||||||
|
|
||||||
export default Stack;
|
export default Stack;
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
import ListCache from './.internal/ListCache.js';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes all key-value entries from the stack.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @name clear
|
|
||||||
* @memberOf Stack
|
|
||||||
*/
|
|
||||||
function stackClear() {
|
|
||||||
this.__data__ = new ListCache;
|
|
||||||
this.size = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default stackClear;
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
/**
|
|
||||||
* Removes `key` and its value from the stack.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @name delete
|
|
||||||
* @memberOf Stack
|
|
||||||
* @param {string} key The key of the value to remove.
|
|
||||||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
|
||||||
*/
|
|
||||||
function stackDelete(key) {
|
|
||||||
const data = this.__data__;
|
|
||||||
const result = data['delete'](key);
|
|
||||||
|
|
||||||
this.size = data.size;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default stackDelete;
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
/**
|
|
||||||
* Gets the stack value for `key`.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @name get
|
|
||||||
* @memberOf Stack
|
|
||||||
* @param {string} key The key of the value to get.
|
|
||||||
* @returns {*} Returns the entry value.
|
|
||||||
*/
|
|
||||||
function stackGet(key) {
|
|
||||||
return this.__data__.get(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default stackGet;
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
/**
|
|
||||||
* Checks if a stack value for `key` exists.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @name has
|
|
||||||
* @memberOf Stack
|
|
||||||
* @param {string} key The key of the entry to check.
|
|
||||||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
|
||||||
*/
|
|
||||||
function stackHas(key) {
|
|
||||||
return this.__data__.has(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default stackHas;
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
import ListCache from './.internal/ListCache.js';
|
|
||||||
import MapCache from './.internal/MapCache.js';
|
|
||||||
|
|
||||||
/** Used as the size to enable large array optimizations. */
|
|
||||||
const LARGE_ARRAY_SIZE = 200;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the stack `key` to `value`.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @name set
|
|
||||||
* @memberOf Stack
|
|
||||||
* @param {string} key The key of the value to set.
|
|
||||||
* @param {*} value The value to set.
|
|
||||||
* @returns {Object} Returns the stack cache instance.
|
|
||||||
*/
|
|
||||||
function stackSet(key, value) {
|
|
||||||
let data = this.__data__;
|
|
||||||
if (data instanceof ListCache) {
|
|
||||||
const pairs = data.__data__;
|
|
||||||
if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
|
|
||||||
pairs.push([key, value]);
|
|
||||||
this.size = ++data.size;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
data = this.__data__ = new MapCache(pairs);
|
|
||||||
}
|
|
||||||
data.set(key, value);
|
|
||||||
this.size = data.size;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default stackSet;
|
|
||||||
Reference in New Issue
Block a user