ignored-words.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import getMeta from '../../utils/meta'
  2. const IGNORED_MISSPELLINGS = [
  3. 'Overleaf',
  4. 'overleaf',
  5. 'ShareLaTeX',
  6. 'sharelatex',
  7. 'LaTeX',
  8. 'TeX',
  9. 'BibTeX',
  10. 'BibLaTeX',
  11. 'XeTeX',
  12. 'XeLaTeX',
  13. 'LuaTeX',
  14. 'LuaLaTeX',
  15. 'http',
  16. 'https',
  17. 'www',
  18. 'COVID',
  19. 'Lockdown',
  20. 'lockdown',
  21. 'Coronavirus',
  22. 'coronavirus',
  23. ]
  24. export class IgnoredWords {
  25. public learnedWords!: Set<string>
  26. private ignoredMisspellings: Set<string>
  27. constructor() {
  28. this.reset()
  29. this.ignoredMisspellings = new Set(IGNORED_MISSPELLINGS)
  30. window.addEventListener('learnedWords:doreset', () => this.reset()) // for tests
  31. }
  32. reset() {
  33. this.learnedWords = new Set(getMeta('ol-learnedWords'))
  34. window.dispatchEvent(new CustomEvent('learnedWords:reset'))
  35. }
  36. add(wordText: string) {
  37. this.learnedWords.add(wordText)
  38. window.dispatchEvent(
  39. new CustomEvent('learnedWords:add', { detail: wordText })
  40. )
  41. }
  42. remove(wordText: string) {
  43. this.learnedWords.delete(wordText)
  44. window.dispatchEvent(
  45. new CustomEvent('learnedWords:remove', { detail: wordText })
  46. )
  47. }
  48. has(wordText: string) {
  49. return (
  50. this.ignoredMisspellings.has(wordText) || this.learnedWords.has(wordText)
  51. )
  52. }
  53. }
  54. export default new IgnoredWords()