ignored-words.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import getMeta from '../../utils/meta'
  2. import { IGNORED_MISSPELLINGS } from '../../ide/editor/directives/aceEditor/spell-check/IgnoredMisspellings'
  3. export class IgnoredWords {
  4. public learnedWords!: Set<string>
  5. private ignoredMisspellings: Set<string>
  6. constructor() {
  7. this.reset()
  8. this.ignoredMisspellings = new Set(IGNORED_MISSPELLINGS)
  9. window.addEventListener('learnedWords:doreset', () => this.reset()) // for tests
  10. }
  11. reset() {
  12. this.learnedWords = new Set(getMeta('ol-learnedWords'))
  13. window.dispatchEvent(new CustomEvent('learnedWords:reset'))
  14. }
  15. add(wordText: string) {
  16. this.learnedWords.add(wordText)
  17. window.dispatchEvent(
  18. new CustomEvent('learnedWords:add', { detail: wordText })
  19. )
  20. }
  21. remove(wordText: string) {
  22. this.learnedWords.delete(wordText)
  23. window.dispatchEvent(
  24. new CustomEvent('learnedWords:remove', { detail: wordText })
  25. )
  26. }
  27. has(wordText: string) {
  28. return (
  29. this.ignoredMisspellings.has(wordText) || this.learnedWords.has(wordText)
  30. )
  31. }
  32. }
  33. export default new IgnoredWords()