autocomplete
Version:
An in-memory autocomplete package based on the trie data structure
48 lines (34 loc) • 1.11 kB
JavaScript
var EventEmitter = require('events').EventEmitter,
util = require('util'),
Trie = require('./trie').Trie;
exports = module.exports = Autocomplete;
exports.version = '0.0.1';
exports.connectAutocomplete = function(getInitialElements) {
Autocomplete.singleton = new Autocomplete();
return Autocomplete.singleton;
};
function Autocomplete(name) {
this.trie = new Trie()
EventEmitter.call(this);
}
util.inherits(Autocomplete, EventEmitter);
Autocomplete.prototype.close = function() {
this.emit('close');
};
Autocomplete.prototype.initialize = function(getInitialElements) {
getInitialElements(function(elements) {
elements.forEach(function(element) {
Autocomplete.singleton.addElement(element);
});
Autocomplete.singleton.emit('loaded');
});
};
Autocomplete.prototype.addElement = function(element) {
this.trie.addValue(element);
};
Autocomplete.prototype.removeElement = function(element) {
this.trie.removeValue(element);
};
Autocomplete.prototype.search = function(prefix) {
return this.trie.autoComplete(prefix);
};