autosuggestion
Version:
  Generates suggestions for text completion.  
51 lines • 1.96 kB
JavaScript
import { Trie } from './trie';
var Dictionary = /** @class */ (function () {
function Dictionary(lookahead) {
if (lookahead === void 0) { lookahead = 0; }
this.lookahead = lookahead;
this.contexts = new Map();
}
Dictionary.prototype.define = function (context, patterns) {
if (patterns === void 0) { patterns = []; }
var trie = new Trie(this, patterns);
this.contexts.set(context, trie);
return trie;
};
Dictionary.prototype.add = function (context, patterns) {
// TODO make it optional to pass in a Word | Lookup | Pattern | Pattern []
var trie = this.contexts.get(context);
if (!trie)
return;
for (var _i = 0, patterns_1 = patterns; _i < patterns_1.length; _i++) {
var pattern = patterns_1[_i];
trie.add(pattern);
}
};
Dictionary.prototype.remove = function (context, patterns) {
// TODO make it optional to pass in a Word | Lookup | Pattern | Pattern []
var trie = this.contexts.get(context);
if (!trie)
return;
for (var _i = 0, patterns_2 = patterns; _i < patterns_2.length; _i++) {
var pattern = patterns_2[_i];
trie.remove(pattern);
}
};
Dictionary.prototype.suggest = function (tokens, contexts) {
if (contexts === void 0) { contexts = []; }
var suggestions = [];
if (contexts.length === 0)
contexts = Array.from(this.contexts.keys());
for (var _i = 0, contexts_1 = contexts; _i < contexts_1.length; _i++) {
var context = contexts_1[_i];
var trie = this.contexts.get(context);
if (!trie)
continue;
suggestions = suggestions.concat(trie.suggest(tokens, this.lookahead));
}
return suggestions;
};
return Dictionary;
}());
export { Dictionary };
//# sourceMappingURL=dictionary.js.map