chrome-devtools-frontend
Version:
Chrome DevTools UI
49 lines (40 loc) • 1.03 kB
text/typescript
// 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();
}
}