/*! * lunr.Store * Copyright (C) @YEAR Oliver Nightingale */ /** * lunr.Store is a simple key-value store used for storing sets of tokens for * documents stored in index. * * @constructor * @module */ lunr.Store = function () { this.store = {} this.length = 0 } /** * Loads a previously serialised store * * @param {Object} serialisedData The serialised store to load. * @returns {lunr.Store} * @memberOf Store */ lunr.Store.load = function (serialisedData) { var store = new this store.length = serialisedData.length store.store = Object.keys(serialisedData.store).reduce(function (memo, key) { memo[key] = lunr.SortedSet.load(serialisedData.store[key]) return memo }, {}) return store } /** * Stores the given tokens in the store against the given id. * * @param {Object} id The key used to store the tokens against. * @param {Object} tokens The tokens to store against the key. * @memberOf Store */ lunr.Store.prototype.set = function (id, tokens) { if (!this.has(id)) this.length++ this.store[id] = tokens } /** * Retrieves the tokens from the store for a given key. * * @param {Object} id The key to lookup and retrieve from the store. * @returns {Object} * @memberOf Store */ lunr.Store.prototype.get = function (id) { return this.store[id] } /** * Checks whether the store contains a key. * * @param {Object} id The id to look up in the store. * @returns {Boolean} * @memberOf Store */ lunr.Store.prototype.has = function (id) { return id in this.store } /** * Removes the value for a key in the store. * * @param {Object} id The id to remove from the store. * @memberOf Store */ lunr.Store.prototype.remove = function (id) { if (!this.has(id)) return delete this.store[id] this.length-- } /** * Returns a representation of the store ready for serialisation. * * @returns {Object} * @memberOf Store */ lunr.Store.prototype.toJSON = function () { return { store: this.store, length: this.length } }