UNPKG

autosuggestion

Version:

  Generates suggestions for text completion.  

51 lines 1.96 kB
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