UNPKG

hashtabler.js

Version:
85 lines (76 loc) 2.02 kB
const { Listr } = require('listr.js'); const Hash = require('object-hash'); let Hashtabler = (function(){ let table = []; return { /** * Insert object * * @param {Object} object * @param {String} key * @returns {String} key */ insert: function (object, key = null) { key = key || this.calculateKey(object); if (this.existsKey(key)) { (table[key]).append(object); } else { let list = new Listr(); list.append(object); table[key] = list; } return key; }, /** * Find key * * @param {String} key * @returns {Listr|undefined} Returns the object if key exists. */ get: function (key) { return table[key]; }, /** * Return true if key exists * * @param {String} key * @returns {boolean} */ existsKey: function (key) { return key in table; }, /** * Calculate new key * * @param {Object} object * @returns {String} */ calculateKey: function (object) { return Hash(object); }, /** * Delete object * * @param {String} key * @returns {boolean} Returns true if key are deleted. */ delete: function (key) { let exists = false; if (this.existsKey(key)) { delete table[key]; exists = true; } return exists; }, /** * Delete all objects * * @returns {boolean} */ clear: function () { table = []; return true; } }; }); module.exports.Hashtabler = Hashtabler;