123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /*!
- * 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
- }
- }
|