UNPKG

chrome-devtools-frontend

Version:
49 lines (40 loc) 1.03 kB
// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import {Trie} from './Trie.js'; export class TextDictionary { readonly words = new Map<string, number>(); readonly index = Trie.newStringTrie(); addWord(word: string): void { let count = this.words.get(word) || 0; ++count; this.words.set(word, count); this.index.add(word); } removeWord(word: string): void { let count = this.words.get(word) || 0; if (!count) { return; } if (count === 1) { this.words.delete(word); this.index.remove(word); return; } --count; this.words.set(word, count); } wordsWithPrefix(prefix: string): string[] { return this.index.words(prefix); } hasWord(word: string): boolean { return this.words.has(word); } wordCount(word: string): number { return this.words.get(word) || 0; } reset(): void { this.words.clear(); this.index.clear(); } }